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(ランタイムタイプ情報)を有効にしてconst type_info&
オブジェクト(name
メソッドを返す)を返すtypeid
演算子を使用する必要があります。式で使うことも、型名で使うこともできます。
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