我有一些这样的代码:
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() {
//
}
如果可能的话,我会选择第二种选择。