我对类和父类(super class)共享字段有点困惑。我期待这没问题:
class SuperC {
public:
SuperC();
protected:
double value;
};
class C : public SuperC {
public :
C(double value);
};
SuperC::SuperC(){}
C::C(double value):SuperC(),value(value){}
但编译器告诉我 C 没有字段“值”。 C 没有继承自 SuperC 中定义的那个?
非常感谢
最佳答案
可以,但是您只能使用构造函数初始化列表语法来初始化当前类成员。
您必须在 SuperC
中创建一个重载构造函数来初始化 value
并调用它。
class SuperC {
public:
SuperC();
SuperC(double v) : value(v) {}
protected:
double value;
};
class C : public SuperC {
public :
C(double value);
};
SuperC::SuperC(){}
C::C(double value):SuperC(value){}
关于C++ : sharing fields between class and superclasses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968400/