我无法为每个对象生成唯一ID。
我的对象是一个歌曲对象,巫婆有变量艺术家,流派等。
所以在私人的 song.h 文件中我有
namespace Test
{
class Program
{
static void Main(string[] args)
{
if (number(1, 9) == 1) // number is a function, not a variable
{
// Do Stuff
}
}
static int number(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
}
}
在我的 song.cpp 文件中
private:
int m_ID;
static unsigned int IDSeed;
我现在得到的主要错误是“未解析的外部符号private static unsigned int Song :: IDSeed”
答案 0 :(得分:1)
在我看来,State
Unverified
IP Address
IPASSIGNED Manage IPs
SMTP Hostname
smtp.mailgun.org
Default SMTP Login
postmaster@MYSUBDOMAIN
API Base URL
https://api.mailgun.net/v3/MYSUBDOMAIN
Default Password
MYPASSWORD SMTP credentials
API Key
MYKEY
对象IDSeed
必须相同,因此必须将其声明为静态。因此,在 song.h 文件中,您必须具有以下内容:
Song
现在,您需要初始化静态成员。所以,在 song.cpp :
class Song {
int m_ID;
static unsigned int IDSeed;
static int helper_seed() { IDSeed++; return IDSeed;}
(...)
};
现在,在unsigned int Song::IDSeed = 0;
对象的每个构造函数上,您可以执行以下操作:
Song
答案 1 :(得分:1)
您可以使用对象的内存地址 -
reinterpret_cast<std::uintptr_t>(this)
- 作为唯一ID,只要ID必须在所有当前活动对象中唯一。
没有两个活着的对象将共享一个地址(尽管一个对象可能正在重用过去的地址,现在已经死了,一个)。
答案 2 :(得分:0)
在您的代码中,static unsigned int IDSeed;
什么都不做。 unsigned int IDSeed = 0;
是&#34; usuall&#34; class(instance)变量,每次初始化类时它都将设置为零。如果要拥有持久值,则必须将此变量设置为static。此外,您可以从static unsigned int IDSeed;
Song()