如何从基类调用后代函数

how to call descendant function from a base class?

本文关键字:后代 函数 调用 基类      更新时间:2023-10-16

我对这个方案有一个问题:

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();