基类中的常量变量

时间:2014-01-11 04:20:06

标签: c++ abstract-class derived-class

我有两个班级,AbstractBaseAbstractBase类的基础。

class Abstract 
{
public:
    virtual ~Abstract();

    const int                   aID;

protected:
    // Constructor is protected because this class is abstract.
    Abstract(int xID) : 
    aID(xID){}
};

#define BASE_CLASS_ID           0x0001

class Base : public Abstract
{
public:
    Base() : 
    Abstract(BASE_CLASS_ID){} // change the ID
};

现在对于这个基类的任何Derived类,我想要使用相同的ID BASE_CLASS_ID。 如何要求所有派生类都使用此行为?

1 个答案:

答案 0 :(得分:0)

如果您希望所有派生类具有相同的常量数据成员aID值,为什么不将此数据成员定义为静态常量数据成员?例如

class Abstract 
{
public:
    virtual ~Abstract();
    enum  { BASE_CLASS_ID = 0x0001 };
    const static int aID = BASE_CLASS_ID;

protected:
    // Constructor is protected because this class is abstract.
    Abstract() = default;
};