写一个作业
有a类和b类,a类有一个成员是b类的对象,b类有一个成员是a类的对象;
vs2010运行程序,在声明对象那一句报错:
c4430: missing type specifier – int assumed. Note: C++ does not support default-int
有a类和b类,a类有一个成员是b类的对象,b类有一个成员是a类的对象;
vs2010运行程序,在声明对象那一句报错:
c4430: missing type specifier – int assumed. Note: C++ does not support default-int
解决方案
10
在b类里不要定义a的对象,定义a对象的指令,然后在b类定义前面声明a是一个类,然后在b类的实现里new一个a。
10
提前声明,不过只能用指针
class B; class A { private: B* m_pb; }; class B { private: A m_a; };
20
定义对象之前,编译器必须看到完整的类定义。
所以用指针代替你的对象。
所以用指针代替你的对象。
10
指针不需要看见全部类的定义,只需要声明即可。而定义需要完全看见类定义