两个C++类的方法返回另一个

Two C++ classes with methods that return the other

本文关键字:返回 另一个 方法 C++ 两个      更新时间:2023-10-16

我必须有两个类,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

当然,我理解为什么,但我想知道是否有一种方法可以正确地实现它。

在类的声明之后对方法进行定义:

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定义必须可用。

首先,。制作一个b类的对象,然后调用它。即。b类;然后在类a中调用它。