[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
#include <typeinfo> main (){ int a; char b; int * c; const type_info & ida=typeid(a); const type_info & idb=typeid(b); const type_info & idc=typeid(c); std::cout << "int is: " << ida.name() << std::endl; std::cout << "char is: " << idb.name() << std::endl; std::cout << "int* is: " << idc.name() << std::endl;}; |
int is int char is char int* is int* |
template <class TMP_CLASS> TMP_CLASS* CreateClass(const std::string & _classname){ const type_info & id=typeid(TMP_CLASS); std::string TMP=id.name(); TMP.erase(0,6);//先頭に[class ]とつくので削除 if(TMP==_classname){ return new TMP_CLASS(); } return NULL; } |
class TestA{ } ; class TestB : public TestA { }; std::string _name;//Loadしてきたクラス名 TestA *out; out=CreateClass<TestB>(_name); |
COMMENT
No Title
const char* 型が返ってきます。 char*型ではありません。
std::string型とクラス名を比べて同じならば新しいクラスを生成する関数です。
新しいクラスのインスタンスが生成されるのであって、クラスは生成しません。
無題
指摘された点を修正しました。
今後こうならないよう気を付けて投稿します。