C++ 変数のクラスを調べたい時に使うtypeid
Sponsored Links
皆さんこんにちは
お元気ですか。私はそれなりに生きています。
さて、今日はtypeidについて解説したいと思います。なんか型とかクラスを取得できるそうです。
言葉で説明をすると非常に難しいような気がするので、例をまずは載せます。
ソースコード
#include <iostream> using namespace std; class Foo{ public: Foo(){}; }; class Bar{ public: Bar(){} }; int main(void){ double var = 10; cout << typeid(var).name() << endl; Foo foo; Foo foo2; Bar bar; cout << typeid(foo).name() << endl; cout << typeid(bar).name() << endl; if(typeid(foo) == typeid(bar)){ cout << "クラスが一致しています" << endl; }else{ cout << "クラスが一致していません" << endl; } if(typeid(foo) == typeid(foo2)){ cout << "クラスが一致しています" << endl; }else{ cout << "クラスが一致していません" << endl; } }
出力
d 3Foo 3Bar クラスが一致していません クラスが一致しています
typeid(変数).name()で型やクラスを取得することができます。
また、typeid(変数) == typeid(変数)でその2つのクラスが同じであるかどうか判定することができます。
templateとかで使えるかもしれないのかな。よくわかりませんがデバッグするときに使えるかもしれません。