У меня есть базовый класс шаблона, и я хотел бы создать вызов поля id
и автоматически увеличивать его для любого экземпляра производных классов, которые наследуются от этого базового класса. Вот моя первая попытка.
namespace {
template<class T>
class BaseClass {
static uint global_id;
public:
uint m_id;
explicit BaseClass(){
m_id = global_id++;
}
};
template<class T>
uint BaseClass<T>::global_id = 0;
class IntClass: public BaseClass<int> {};
class DoubleClass: public BaseClass<double> {};
}
TEST(Exp, GlobalIdTest) {
IntClass a;
DoubleClass b;
ASSERT_EQ(a.m_id, 0);
ASSERT_EQ(b.m_id, 1);
}
Этот код, однако, создает отдельный global_id
для любой единицы перевода. Есть ли способ иметь один статический global_id для всех единиц перевода, чтобы вышеуказанный тест прошел?