我在互联网上的某个地方找到了一个简单的解决方案,用于没有内置 C++ RTTI的身份类。
template <typename T>
class Identity {
public:
static int64_t id()
{
static int64_t dummy;
return reinterpret_cast<int64_t>(&dummy);
}
};
当我们需要一些类 ID 时,我们只需使用:
Identity<OurClass>::id();
我想知道,有没有碰撞?它可以为不同的类返回相同的 ID,还是为相同的类返回不同的 ID?我已经用具有不同优化值的 g++ 尝试了这段代码,一切似乎都很好。