在我提出问题之前,我将描述一下这个场景。
我们假设我有一个名为BinaryOperator
的班级,其中包含2个子类:And
,Or
。
我想知道我是否可以在f()
中定义一个函数And
,返回类型为Or*
,如下所示:
Or* And::f()
并在g()
中定义一个函数Or
,返回类型为And*
,如下所示:
And* Or::g()
当我尝试这样做时,我最终会出现一个编译错误,说明" '或'没有命名类型"。
如果可以的话,请表示赞赏。
答案 0 :(得分:1)
您正在寻找的是这样的:
class Or; // <-- forward declaration
class And : public BinaryOperator
{
public:
Or* f();
};
class Or : public BinaryOperator
{
public:
And* g();
};