一个成员函数为另一个类友元函数
注意点:必须先声明类B,再定义类A;若调换顺序会发生语法错误
class B;
class A
{
public:
void know(B mm
);
protected:
};
class B
{
public:
MM(string name
, int age
) :name(name
), age(age
){}
friend void boy
::know(B mm
);
protected:
string name
;
int age
;
};
以下代码可能出现的问题: IntelliSense:智能检测 : 也就是说编译器根据语法结构检测出代码有问题,实质上是没问题的。
void boy
::know(B mm
)
{
cout
<< mm
.name
<< "\t" <<mm
.age
<< endl
;
}
int main()
{
B
mm("小美", 19);
boy
*p
= new boy
;
p
->know(mm
);
delete p
;
system("pause");
return 0;
}
总结:
注意类的定义顺序只要符合语法规则,可以忽略编译器的智能检测。