我对这个方案有一个问题:
class computer_mouse
{
left_click() { };
track_wheel() { };
right_click() { };
}
class game_mouse: public computer_mouse
{
double_shot() { };
throw_grenade() { };
sit_down() { };
}
class design_mouse: public computer_mouse
{
increase_zoom() { };
decrease_zoom() { };
}
class computer
{
computer_mouse *my_mouse;
}
我想这样做:
computer_mouse *my_mouse = new game_mouse();
my_mouse->double_shot();
如何从基类调用后代函数?
你必须使用例如 static_cast
:
computer_mouse *my_mouse = new game_mouse();
static_cast<game_mouse*>(my_mouse)->double_shot();
从上面链接的维基百科页面:
static_cast运算符可用于以下操作:
将基类的指针
- 转换为派生类的指针,
通过使用static_cast
:
static_cast<game_mouse*>(my_mouse)->double_shot();
但是,这些方法应该是公开的,而不是私有的!
class game_mouse: public computer_mouse
{
public:
double_shot() { };
throw_grenade() { };
sit_down() { };
}
不要这样做:
computer_mouse *my_mouse = new game_mouse();
my_mouse->double_shot();
这样做:
game_mouse *my_mouse = new game_mouse();
my_mouse->double_shot();