テンプレートのサンプルコード
あとで使おうと思って調べたので備忘録として。
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