两个C ++类,其方法返回另一个

时间:2016-08-02 16:05:08

标签: c++ class

我必须使用类,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

我理解为什么,当然,但我想知道是否有办法正确实现它。

2 个答案:

答案 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级; 然后在课堂上调用它。