私の C++ は少し錆びています。これが私がやろうとしていることです:
class Cmd { };
class CmdA : public Cmd { };
class CmdB : public Cmd { };
...
Cmd *a = new CmdA ();
Cmd *b = new CmdB ();
最初の問題:
cout << typeid (a).name ()
cout << typeid (b).name ()
どちらも Cmd * タイプを返します。私の望む結果は CmdA* と CmdB* です。これを達成するための次の方法以外の方法:
if (dynamic_cast <CmdA *> (a)) ...
第二に、私はこのようなことをしたいと思います:
class Target {
public:
void handleCommand (Cmd *c) { cout << "generic command..." }
void handleCommand (CmdA *a) { cout << "Cmd A"; }
void handleCommand (CmdB *b) { cout << "Cmd B"; }
};
Target t;
t.handleCommand (a);
t.handleCommand (b);
出力「Cmd A」と「Cmd B」を取得します。現在、「汎用コマンド...」が 2 回出力されます。
ありがとう