如何使用Visual Studio 2010以C++形式获取所提供类型的字符串名称?在Visual Studio 2010中以字符串形式获取类型名称
例子:
class MyClass { ... };
std::string typestr;
typestr = typeof(MyClass);
//typestr should hold "MyClass" now
如何使用Visual Studio 2010以C++形式获取所提供类型的字符串名称?在Visual Studio 2010中以字符串形式获取类型名称
例子:
class MyClass { ... };
std::string typestr;
typestr = typeof(MyClass);
//typestr should hold "MyClass" now
typeid可能是你所需要的。
或者你可以使用一些丑陋的定义黑客:
//# is the Stringizing operator
#define typeof(X) #X
看到这里的文档/警告:http://msdn.microsoft.com/en-us/library/7e3a913x%28v=VS.100%29.aspx
或者像@ badgerr那样使用宏,如果你可以在编译时推论它。如果在运行时需要它,则需要启用RTTI(运行时类型信息)并使用typeid
运算符,该运算符返回const type_info&
对象,该对象具有name
方法。您可以将它与表达式或类型名称一起使用。
class myClass{
// ...
};
int main(void){
myClass myObject;
cout << "typeid(myObject).name() = " << typeid(myObject).name() << endl;
if (typeid(myObject) == typeid(myClass) {
cout << "It's the same type as myClass" << endl;
}
}
预处理器解决方案当然只能用于编译时。通用的运行时解决方案是不可能的,因为C++没有反射(你需要像Java或C#这样的托管语言)。 – bjornars 2011-02-08 11:45:48