类A成员函数,做类B的友元函数,然后这个函数在类A内实现,就会报错,在类外实现就没有问题,问什么不能在类内实现?
报错信息:
invalid use of incomplete type
源代码
#include
using namespace std;
class B;
class A;
class B
{
int num;
public:
B(int n = 0) : num(n) {} // 构造函数
friend void A::sum_2(B &b); // 友元函数
A::sum_2
};
class A
{
int num;
public:
A(int n = 0): num(n) {} // 构造函数
void sum_2(B &b) // 成员函数 sum_2
{
int sum = num + b.num; // 访问了参数对象的私有变量
cout << num << " + " << b.num << " = "
<< sum << endl;
}
};
int main()
{
A a(1);
B b;
a.sum_2(b); // 调用a的成员函数
system("PAUSE");
return 0;
}
把class A B都提前声明
这个错误代码会报错找不到classA的实现
如果我修改,把class A先定义,会报错找不到classB的实现