【发布时间】:2017-10-22 18:22:10
【问题描述】:
我在为每个对象生成唯一 ID 时遇到问题。
我的对象是一个歌曲对象,具有可变艺术家、流派等。
所以在我的 song.h 文件中,我有
private:
int m_ID;
static unsigned int IDSeed;
在我的 song.cpp 文件中
Song::Song()
{
static unsigned int IDSeed = 0;
m_ID = IDSeed++;
}
Song::Song(constructor variables)
{
m_ID = IDSeed++;
}
我现在遇到的主要错误是 "unresolved external symbol private static unsigned int Song::IDSeed"
【问题讨论】:
-
如果您使用默认构造函数 (
Song a; Song b; Song c;) 构造它们,那么您将所有 ID 设置为零。 -
so in my song.h file under private 我有 为什么你不只显示你的歌曲类声明?二、
static unsigned int IDSeed;与unsigned int IDSeed = 0;不同 -
不能简单的使用对象的内存地址(
reinterpret_cast<std::uintptr_t>(this))作为唯一ID吗?没有两个活着的对象会共享一个地址(尽管一个对象可能会重新使用过去的地址,现在已经死了,一个)。
标签: c++