我在互联网上找到了一个简单的解决方案,用于创建一个没有内置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++中使用不同的优化值运行了此代码,一切似乎都正常。
int
变量,并返回指向它的指针。编译器将会优化该函数。 - Electroint
即可。 - Electro