读书人

下面有几行代码。为什么不可以将成员函

发布时间: 2012-04-28 11:49:53 作者: rapoo

下面有几行代码。为什么不可以将成员函数的定义写在类里
#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;

读书人网 >C++

热点推荐