我有一些这样的代码:

class Class1 {
    // some code here

    Class2 inverse() {
        // some code here
    }
};

class Class2 : public Class1 {
    // some code here
};

我得到一个错误,即Class2在函数inverse中是未知的。我可以宣布该类(class)吗?

最佳答案

您可以在Class2之前转发声明Class1。然后,您必须将inverse函数声明与定义分开。因此,您应该在定义Class2之后定义它:

class Class2;
class Class1 {
// some code here

Class2 inverse();
};

class Class2: public Class1 {
// some code here
};

Class2 Class1::inverse()
{
    return Class2();
}

但是,老实说,这是不好的设计。

关于c++ - 派生类的前向声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16552014/

10-11 10:32