【问题标题】:How do you call a virtual function inside the base class?(C++) [closed]如何在基类中调用虚函数?(C++)[关闭]
【发布时间】:2021-09-05 04:13:42
【问题描述】:

我有以下内容:

class A{

public:
   virtual void OnStart() = 0;
   void GameLoop(){
      OnStart();
      //Do other stuff
   }

};

class B : public A{
   void OnStart() override{
      //Do Something
   }
};

现在我遇到的问题是它要么根本不调用 OnStart,要么给我一个错误。我也尝试过this->OnStart(),但我尝试过的方法都没有奏效。

【问题讨论】:

  • 请显示有错误的代码或不符合您的预期。您发布的代码没有这个问题,但其他的。对于初学者virtual void OnStart = 0; 语法无效
  • 我试过你的代码here。并且它可以与其他人建议的添加的 () 括号一起使用。只要确保你创建了一个 B 类而不是 A 类的实例。

标签: c++ inheritance virtual-functions


【解决方案1】:

您应该将虚拟OnStart 声明为函数。

class A{

public:
   virtual void OnStart() = 0; // add () to declare it as a function (with no arguments)
   void GameLoop(){
      OnStart();
      //Do other stuff
   }

};

class B : public A{
   void OnStart() override{
      //Do Something
   }
};

【讨论】:

  • 我只是在那里打错了,但我已经弄明白了。不过还是谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多