下面有几行代码。为什么不可以将成员函数的定义写在类里
#include<iostream>
using namespace std;
class Y
{
public:
void g(X*) ; // 换成这句:void g(X *x) { x->i+=1; }
};
class X
{
int i;
public:
friend void h(X *x) {x->i+=10; };
friend void Y::g(X*);
friend class Z;
};
class Z
{
public:
void f(X *x) { x->i+=5; }
};
void Y::g(X *x) { x->i+=1; } //这句删掉
void main()
{
}
[解决办法]
先没定义好 X这个类吧 ,写在Y类里面,用到了 X类的成员,所以先要定义 X类吧
[解决办法]
可以啊,为什么不可以,没问题的
[解决办法]
是的,的确不可以。
参考:
关于C++中的前置声明
包你对此再无疑问
[解决办法]
由于Y类里面用到了X类,因此,你需要将X类的定义写在Y类的定义之前,或者在Y类定义之前,加上X类的前置声明,
即在Y类定义之前加上如下语句:
class X;