【发布时间】:2011-06-15 22:20:30
【问题描述】:
在 C++ 中是否有任何有效的方法来生成类唯一的 ID,而不是实例?我正在寻找这种简单程度的东西(这会为每个实例生成一个 ID,而不是为每个类类型生成一个 ID):
MyClass::MyClass()
{
static unsigned int i = 0;
id_ = i++;
}
编辑:为什么我需要唯一 ID。
我正在写一个游戏。我游戏中的所有实体都会有不同的状态(左走、跳跃、站立等);这些状态在类中定义。每个州都需要有自己的 ID,以便我识别它。
【问题讨论】:
-
typeid或type_info尽管这些通常仅用于调试目的,所以我只使用枚举或字符串标识符。你想要完成什么需要你有一个类型 ID 列表,因为可能有更好的方法...... C++ 是强类型的,所以所有类型都已经具有固有的唯一性。 -
@AJG85 在生产代码中使用
typeid是不好的做法吗?这似乎是目前对我来说最好的事情。 -
我认为它在生产代码中是不好的做法。首先,因为它是一个运行时构造,不能保证返回任何人类可读的
.name内容,其次因为 C++0x 引入了decltype和auto,这应该可以减轻模板代码中的一些类型检查需求,这可能是唯一应该考虑这样的地方。
标签: c++ algorithm performance