- C++相談室 part144
896 :デフォルトの名無しさん[sage]:2019/09/08(日) 16:48:58.23 ID:ijKgjVtQ - 全クラスに対応する必要なんてないんだったらこんな感じでいいんじゃないか
enum ClassName{ Hoge, Hige, Hage } std::any func(ClassName name){ std::any out; switch(name){ case ClassName::Hoge: out = new Hoge(); break; case ClassName::Hige: out = new Hige(); break; case ClassName::Hage: out = new Hage(); break; } return out;} int main(){ //なんか文字列を受け取る ClassName name; //文字列をClassNameに変換する auto fuga = func(name); if(fuga.type() = typeid(Hoge*)){ auto hoge = std::any_cast<Hoge*>(fuga); //hogeの処理 } else if 以下略 }
|