在我提问之前,我先描述一下场景。
比如说我有一个叫做 BinaryOperator 有2个子类: And , Or .
BinaryOperator
And
Or
我想知道我是否可以定义一个函数 f() 在里面 和 带返回类型 Or* 像这样:
f()
和
Or*
Or* And::f()
并定义一个函数 g() 在里面 或 带返回类型 And* 像这样:
g()
或
And*
And* Or::g()
当我尝试这样做时,我最终会出现一个编译错误,即“'或'不命名类型'”。
如果可以的话,请澄清。
你要找的是这样的东西:
class Or; // <-- forward declaration class And : public BinaryOperator { public: Or* f(); }; class Or : public BinaryOperator { public: And* g(); };