1

このスキームについて質問があります。

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

基本クラスから子孫関数を呼び出すにはどうすればよいですか?

4

3 に答える 3

3

static_castそのためには、たとえば次を使用する必要があります。

computer_mouse *my_mouse = new game_mouse();

static_cast<game_mouse*>(my_mouse)->double_shot();

上記のリンクされたウィキペディアのページから:

static_cast 演算子は、次のような操作に使用できます。

  • 基底クラスのポインターを派生クラスのポインターに変換し、
于 2012-09-25T17:05:19.990 に答える
1

を使用してstatic_cast

static_cast<game_mouse*>(my_mouse)->double_shot();

ただし、メソッドは非公開ではなく、公開する必要があります。

class game_mouse: public computer_mouse
{
public:
    double_shot() { };
    throw_grenade() { };
    sit_down() { };
}
于 2012-09-25T17:09:49.847 に答える
0

これをしないでください:

computer_mouse *my_mouse = new game_mouse();
my_mouse->double_shot();

これを行う:

game_mouse *my_mouse = new game_mouse();
my_mouse->double_shot();
于 2012-09-25T17:12:21.970 に答える