のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

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とかで使えるかもしれないのかな。よくわかりませんがデバッグするときに使えるかもしれません。

参考文献

実行時型情報