我有一组派生自相同基类的类,大致如下所示:
class IClass
{
public:
virtual int64_t getIdentifier() const = 0;
};
template<int64_t ID>
class Base : public IClass
{
public:
static const int64_t s_identifier = ID;
virtual int64_t getIdentifier() const { return s_identifier; }
};
我想使用静态s_identifier
来标识一组派生类(我知道有一个typeid运算符,但我想找到另一个解决方案)。
例如,一个派生类可能如下所示:
class Derived : public Base<0x630aea1e>
{
};
如果有两个具有相同标识符的派生类(以避免复制和粘贴错误,或仅仅是因为有人将0x12345678
作为ID放置两次),我正在寻找获得警告的方法。我认为必须在编译时完成,但我目前无法想办法如何做到这一点,也许有人可以帮助我。