可以通过在派生类中初始化受保护的基类成员

时间:2016-06-30 06:28:14

标签: c++

为了便于RTTI,我考虑初始化受保护的基类成员 变量使用枚举。

RAISERROR

现在,要在派生类中初始化它,我可以编写派生类 CTor是这样的:

class myBase
{
public:
    typedef enum class mySubType { base, type1 };
    myBase() : myType( mySubType::base ) {}
    virtual ~myBase();
protected:
    mySubType myType;
};

???

1 个答案:

答案 0 :(得分:0)

抱歉,这是不可能的。见这里:C++ error initializing base class data member in the derived class member initialization list

基本上你必须重写基本的CTor声明来接受这样的枚举:

document.location.reload()

通过使CTor也不接受任何参数,您已经定义了一个默认的CTor,在使用std容器时可以派上用场。

最后以这种方式在派生类中使用它:

myBase( mySubType _t = mySubType::base ) : myType( _t ) {}