我必须使用类,a和b,每个都需要有一个返回另一个的方法。如果我尝试编译以下代码,我会因为未提前定义后面的类而收到错误:
class a{
public:
b* change(){
return new b;
}
}
class b{
public:
a* change(){
return new a;
}
}
error: 'b' does not name a type
我理解为什么,当然,但我想知道是否有办法正确实现它。
答案 0 :(得分:3)
在类的声明之后进行方法的定义:
class b;
class a{
public:
b* change();
}
class b{
public:
a* change();
}
b* a::change() { return new b; }
a* b::change() { return new a; }
换句话说,当您执行new T
时,T
的定义必须可用。
答案 1 :(得分:-3)
首先,。制作一个b类的对象,然后调用它。 即 b级; 然后在课堂上调用它。