混乱するタイトルについては、どうしても言い方がわかりません。 私がしようとしているのは、基本的にマップから動的に取り出される型にキャストされます。 (マップにはインスタンスはありませんが、可能であればタイプがあります)オブジェクトの型をキャスト目的のマップに格納することは可能ですか?
例を使って説明することができます。私はbaseFoo
class baseFoo
{
}
と呼ばれる基本クラスを持っているし、私はbaseFooから継承今すぐ
class derfooB : public baseFoo
{
}
derfooB
についても同様にderFooA
とderFooB
class derfooA : public baseFoo
{
}
とと呼ばれる2つの異なるクラスがあるとし 私はマップに型を格納できるかどうかを知りたがっています(型のインスタンスではありません - 単純に変数の型)この
//STATEMENT A:
std::map<std::string , baseFoo> myMap= {{"derfooA",derfooA}, {"derfooB", derfooB}};
のようなものは、それから私はこのような何かをしたいと思います:
私はbaseFoo
PTRを持っていると言うと、私はに基づいて、特定のタイプにPTRを意気消沈したいと思います文字列。このようなメカニズムは、私の文がどのように見えるかだろうことも可能である場合
std::string str = "derfooA";
derfooA* dfoo = dynamic_cast<myMap[str]>(baseFoo_ptr)
今私の質問は次のとおりです。だから私は、これを行うことができますか?
'dynamic_cast'ステートメントの' derFooA'は、あなたがターゲットタイプを知っていることを示唆しています。 – aschepler
あなたはどんな問題を解決しようとしていますか?なぜあなたはダウンキャストが必要ですか? – Barry
特定の型にキャストしようとしていますが、この型は文字列から判断されます。これを達成するために、私はマップを使用しているその目的のための型に文字列をマップすることをお勧めします –