是否有一种方法有两个(或更多)类,每个可以创建另一个在c++中的对象?



所以我有两个继承自基类的类,并且我希望它们中的每一个都有调用另一个的构造函数的成员。类似的;

class BaseClass {
protected:
BaseClass* a;
public:
virtual void Create() {}
}
class Class1 : public BaseClass {
public:
void Create() {
a = new Class2;
}
}
class Class2 : public BaseClass {
public:
void Create() {
a = new Class1;
}
}

当然,如果你尝试这样做,它会不高兴,因为无论你把哪个放在前面,它都试图创建一个未声明类型的对象。

I have try forward declaration。当然,它不工作,因为它必须知道类的结构,但我还是尝试了。

我真的不知道还有什么可以尝试,或者是否真的有可能。这看起来不像是会导致任何逻辑错误或无限大对象或任何东西的情况。

我已尝试向前声明。当然它不工作

不确定您尝试了什么,但是下面的前向声明编译得很好:

class BaseClass {
protected:
BaseClass* a;
public:
virtual void Create() {}
};
class Class1 : public BaseClass {
public:
void Create();
};
class Class2 : public BaseClass {
public:
void Create();
};
void Class1::Create() {
a = new Class2;
}
void Class2::Create() {
a = new Class1;
}

您展示的代码在一些地方缺少分号,因此它可能不是您要编译的真正代码。您的实际代码可能有不同的问题,但是在修复编译错误后,可以使所显示的代码按照上面所示进行编译。

最新更新