我的 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”。现在它打印出“通用命令...”两次。
谢谢