ここに新しい C++ プログラマーがいます。
次のマップ定義があります。
typedef std::map<std::string, Option> MapType;
MapType my_map
オプションは、私が作成した独自のクラスです。実際に Option クラスを自分のマップに追加することはありません。代わりに、常に Option から継承するクラスを追加しています。たとえば、int 変数を格納する IntOption というクラスがあります (それが行うすべて)。
次のようにして、IntOption をマップに追加しても問題ありません。
IntOption add;
my_map.insert(std::pair<string, IntOption>("a key here", add));
これはうまくいきます
my_map["a key here"]
値「追加」を返します。
さて、善良な皆さんへの私の質問は、戻り値からサブクラス変数を取得するにはどうすればよいですか? 私は次のことができます
my_map["a key here"].getVariableA(); // this is in the base class Option.
しかし、私はできません
my_map["a key here"].getIntVariable(); //this fails because it doesnt recognize the
// getter は基本クラスではなく、Option を拡張するクラスにあるためです。
この問題を解決するにはどうすればよいですか?
typedef std::map MapType; を検討しました。
動的キャストを行う方法も、クラスへのポインターをマップに追加する方法もわかりません。