This question already has answers here:
How can I initialize base class member variables in derived class constructor?
(8个答案)
3年前关闭。
为了简化RTTI,我考虑了初始化受保护的基类成员
使用枚举变量。
现在,要在派生类中初始化它,我可以编写派生类吗
CTor像这样:
???
通过使CTor也不接受任何参数,您已经定义了默认的CTor,在使用std容器时可以使用它。
最后以这种方式在派生类中使用它:
(8个答案)
3年前关闭。
为了简化RTTI,我考虑了初始化受保护的基类成员
使用枚举变量。
class myBase
{
public:
typedef enum class mySubType { base, type1 };
myBase() : myType( mySubType::base ) {}
virtual ~myBase();
protected:
mySubType myType;
};
现在,要在派生类中初始化它,我可以编写派生类吗
CTor像这样:
myDerived::myDerived() : myBase(), myType( mySubType::type1 ) {}
???
最佳答案
抱歉,这是不可能的。看到这里:C++ error initializing base class data member in the derived class member initialization list
基本上,您必须重写基本CTor声明才能接受该枚举,如下所示:
myBase( mySubType _t = mySubType::base ) : myType( _t ) {}
通过使CTor也不接受任何参数,您已经定义了默认的CTor,在使用std容器时可以使用它。
最后以这种方式在派生类中使用它:
myDerived::myDerived() : myBase( mySubType::type1 ) {}
关于c++ - 可以通过[duplicate]在派生类中初始化 protected 基类成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38115450/