我有两个班级,Abstract
和Base
。 Abstract
是Base
类的基础。
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
。
如何要求所有派生类都使用此行为?
答案 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;
};