我希望有一个简单的类来表示具有唯一ID的对象。每个新对象的ID都高于先前创建的ID。需要注意的重要一点是每个对象的id都是常量,所以我不得不使用初始化列表。由于某种原因,我得到一个关于未定义引用的错误:对Test :: ID的未定义引用。
class Test
{
const int m_id;
static int ID;
public:
Test() : m_id(ID++)
{
cout << "Created object with id: " << m_id << endl;
}
};
答案 0 :(得分:2)
您需要在一个翻译单元中为静态保留存储空间。然后你初始化它。所以你需要写
int Test::ID = 0;
在你的一个源文件中。
考虑将类型更改为std::atomic<int>.
这样做可以提高代码的线程安全性。