C++ : sharing fields between class and superclasses

标签 c++ inheritance field

我对类和父类(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/

相关文章:

Java:枚举常量中方法和变量的定义

c# - 使用公共(public)领域的最佳做法是什么?

java - Apache axis 1.3 - wsdl 中具有相同名称的元素

c++ - 在消息框 C++ 中发布或显示多个字符串

css继承

c++ - 为什么在使用可变构造函数时必须创建类型别名?

python - 如何使用结构化数据填充多个命名字段

c++ - 为什么我不能将 const 左值引用绑定(bind)到返回 T&& 的函数?

用于将结构类型映射到枚举的 C++ 模板?

c# - 一个 'else' 用于嵌套的 'if' 语句