テンプレートのサンプルコード

あとで使おうと思って調べたので備忘録として。
create関数にクラス名を渡すと、オブジェクトを生成して返してくれる。
サンプルなのでnamespaceとかはなくても良かったが、実際使うときにはnamespaceも使うつもりだったので合わせて。

サンプルコード

#include <cstdio>
#include <typeinfo>

namespace sample {
	template <class T>
	T*
	create() {
		T* obj = new T();
		return obj;
	}
}

class AClazz {};
class BClazz {};

int main(int argc, char **argv) {
	AClazz* aclazz = sample::create<AClazz>();
	BClazz* bclazz = sample::create<BClazz>();

	puts(typeid(aclazz).name());
	puts(typeid(bclazz).name());

	delete aclazz;
	delete bclazz;

	return 0;
}

実行結果

P6AClazz
P6BClazz