C ++重写方法不起作用 [英] C++ Overriding method not working

查看:169
本文介绍了C ++重写方法不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我期待我的游戏打印出来,但我得到Base
只有在课堂内部使用方法时才会发生这种情况。

I am expecting "My Game" to print out but I am getting "Base" This only happens when using methods internally inside the class.

#include <iostream>

namespace Monster { class App {
public:
  App(){}
  ~App(){}
  void run(){
    this->speak();
  }
  void speak(){
    std::cout << "Base" << "\n";
  };
};}; // class / namespace

class MyGame : public Monster::App {
public:
  MyGame(){}
  ~MyGame(){}
  void speak(){
    std::cout << "My Game" << "\n";
  };
};

int main(){
  MyGame *child = new MyGame;
  child->run();
  return 0;
}


推荐答案

在C ++中你需要专门声明一个函数 virtual

In C++ you need to specifically declare a function to be virtual:

class BaseClass {
    virtual void speak () {
        ...
    }
};

这篇关于C ++重写方法不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆