【发布时间】:2020-07-26 02:31:52
【问题描述】:
我有两个类ClassOne、ClassTwo,每个类都在一个单独的文件.h 和.cpp 中,如下所示:
// ClassOne.h file
#include <ClassTwo.h>
class ClassOne : public ClassTwo {
protected:
type m_string; // Required for "ClassTwo"
}
// ClassTwo.h file
#include <ClassOne.h>
class ClassTwo : public ClassOne {
public:
method1(); // <---|
method2(); // <- Required to be available in class ClassOne.
method3(); // <---|
}
正如您在前面的代码中看到的,这两个类相互继承,但该代码出现错误error C2504: 'ClassOne': base class undefined 和error C2504: 'ClassTwo': base class undefined。
这样做的目的是我希望“ClassTow”的成员函数在“ClassOne”中可用,但“ClassTwo”需要“ClassOne”中的成员变量。
如何让两个类相互继承?
【问题讨论】:
-
您要解决什么问题?你能用 CRTP 解决问题吗?
-
class X : public class Y表示Y是带有一些额外内容的X。X不可能同时是带有一些额外内容的Y。 -
听起来你应该有 1 个班级,而不是 2 个
-
@LionKing 可能将指向
ClassOne对象的指针(或引用)传递给ClassTwo对象的构造函数,并让ClassTwo持有指向ClassOne对象的指针/引用成员变量?然后每个类对象可以通过它持有的成员变量调用另一个对象上的方法。 -
通过一个实际的具体示例来决定如何正确构建代码会容易得多。 您想通过这个组织解决什么问题?
标签: c++ class inheritance