1

我有某种容器,对象可以使用它来存储它们的一些数据。每个存储的对象都应该有它的 id,例如。MY_GL_CONTEXT、FUNNY_CONF_OBJECT 等。我想存储这些标识符,这些标识符分布在将使用它们的对象中。示例:Model 类的对象想要使用 id MY_GL_CONTEXT 存储数据。

我想知道,我应该为这些 id 使用什么样的类型以避免类之间的冲突。如果我使用 static const int 那么可能会发生,Object::MY_GL_CONTEXT 将具有与 Something::FUNNY_CONF_OBJECT 相同的 int 值,因此它们在使用我的容器时会发生碰撞。

谢谢你。

4

2 回答 2

2

在 C++ 中,有一些独特的东西。

每个对象都有一个唯一的地址。转换为void*,可以比较是否相等。不同的对象有不同的地址,所以这就是一个可用的 id。

每个多态类型都有自己的运行时类型信息,可通过typeid. 这是通过 订购的std::type_info::before

由于单独编译,几乎不可能保证const int值是唯一的。事实上,由于分开编译,两个.cpp文件可以同时编译。一个编译器如何知道int另一个编译器会选择什么值?

于 2013-10-25T11:26:49.220 回答
1

创建一个共享.h文件并在那里定义不同的值,这样就很容易发现重复的值(只要你保持它们的顺序)。在需要的任何地方都包含该文件。

// To avoid duplication
#ifndef CONSTANTS   
#define CONSTANTS
#define MY_GL_CONTEXT 1
#define FUNNY_CONF_OBJECT 2
...
#endif
于 2013-10-25T09:52:24.327 回答