Pau*_*nta 8 c++ algorithm performance
在C++中是否有任何有效的方法来生成类的唯一ID,而不是实例?我正在寻找这种简单程度的东西(这会为每个实例生成一个ID,而不是为每个类类型生成一个ID):
MyClass::MyClass()
{
static unsigned int i = 0;
id_ = i++;
}
Run Code Online (Sandbox Code Playgroud)
编辑:为什么我想要唯一的ID.
我正在写一个游戏.我游戏中的所有实体都会有不同的状态(左转,跳跃,站立等); 这些状态在类中定义.每个州都需要拥有自己的ID,以便我可以识别它.
Pet*_*der 14
你可以试试这个,但这不是确定性的.
int id_count = 0;
template <typename T>
int get_id()
{
static int id = id_count++;
return id;
}
Run Code Online (Sandbox Code Playgroud)
然后使用:
get_id<int>(); // etc.
Run Code Online (Sandbox Code Playgroud)
当然,这不是线程安全的.
同样,它不是确定性的:在您第一次为每种类型调用函数时生成ID.所以,如果在一次运行中你在另一次运行get_id<int>()之前调用,get_id<float>()那么你会反过来调用它们然后它们会有不同的ID.但是,它们在单次运行中对于每种类型始终是唯一的.
使用您MyClass作为原语,并将其静态实例合并到您想要 ID 的每个类中。
class MyOtherClass1 {
static MyClass id;
};
class MyOtherClass2 {
static MyClass id;
};
[etc.]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7640 次 |
| 最近记录: |