我正在尝试编写一个基类和一组 N 个派生类,其中每个派生类都有自己的唯一标识符,这是一个简单的“手动”实现:
struct Base {
static int id_ = 0;
};
struct Derived1 : public Base {
static int id_ = 1;
};
struct Derived2 : public Base {
static int id_ = 2;
};
问题是,如果我想继续添加派生类,我必须计算已经存在的派生类的数量。
事情也变得更加复杂,因为我想使用一个 bitset 来表示唯一 ID。如果每个派生类的唯一 ID 基本上只是设置为 1 的不同位(公共长度位集),那么对派生类组执行二进制 AND/OR/XOR/etc 操作变得非常容易。
以下是我想要的不完整且不正确的实现
//Let DCOUNT be the number of derived classes, Ideally I shouldnt have to ever
//know/think about what it evaluates too, it should be automatic.
//But that is second priority, I would be willing to #define this to
//some 'large' value, and not worry about it.
struct Base {
static std::bitset<DCOUNT> id_ = generateUniqueID(); // "00000"
};
struct Derived1 {
static std::bitset<DCOUNT> id_ = generateUniqueID(); // "00001"
};
struct Derived2 {
static std::bitset<DCOUNT> id_ = generateUniqueID(); // "00010"
};
实现这一点的最佳方法是什么?(或类似的东西)