我有一些这样的代码:
class Class1 {
// some code here
Class2 inverse() {
// some code here
}
};
class Class2 : public Class1 {
// some code here
};
我得到了一个Class2函数未知的错误inverse。我可以声明该类吗?如何声明?
我有一些这样的代码:
class Class1 {
// some code here
Class2 inverse() {
// some code here
}
};
class Class2 : public Class1 {
// some code here
};
我得到了一个Class2函数未知的错误inverse。我可以声明该类吗?如何声明?
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();
}
但是,老实说,这是一个糟糕的设计。
Class2当您到达时未定义,Class2 inverse()因此即使向前声明也不能完全解决该问题。但是,您可以做两件事。返回指针或引用Class2
class Class2;
^^^^^^^^^^^^
class Class1 {
Class2& inverse() {
// ^^^ or possibly Class2*
//
}
};
class Class2: public Class1 {
}
或在完全定义inverse后定义Class2
class Class2;
class Class1 {
Class2 inverse();
};
class Class2: public Class1 {
//
}
Class2 Class1::inverse() {
//
}
如果可能的话,我会选择第二种选择。