我正在开发一个涉及A类的项目,该类包含一些子类(childB,childC,childD)。我过于简化的目标是拥有类似的东西
#include <string>
class A{
public:
childB cb; <<Error C4430: missing type specifier - int assumed
childC cc; <<Error C4430: " "
childD cd; <<Error C4430: " "
A(){
cc.setString("xyz"); <<Error C2039: 'cc' is not a member of A
}
};
class childB : public A{
public:
int value;
};
class childC : public A{
private:
std::string str;
public:
void setString(std::string s){
str = s;
}
std::string getString(std::string s){
return str;
}
};
class childD : public childB{
public:
double value;
};
#include "classA.h"
int main (){
A a;
a.cc.getString(); <<Error C2228: left of '.getString()' must have class/struct/union
}
从这一点开始,我会在main中有多个东西来设置不同子类的值,但是在编译时我收到很多错误,告诉我cb,cc,cd不是A的成员。其他错误也是列出。
我有什么理由不能将子类添加到父类中,如图所示?
答案 0 :(得分:0)
我认为父类不可能拥有子类的实例。您可以使用子类指针而不是子类对象。
在单独的头文件中定义子类。
在父类头文件中添加子类的前向声明。
使用子类指针而不是子类对象。
在父方法(如init())中使用相应的子类对象初始化父类的子类指针成员。不要在父构造函数中初始化它们,因为它将进行无限递归。您必须将init()方法移动到cpp文件并在其中包含子类头文件。