【问题标题】:How can I make a virtual method properly? (C++)如何正确制作虚拟方法? (C++)
【发布时间】:2012-12-17 21:01:06
【问题描述】:

这是我所拥有的:

class Abstract
{
public:
  virtual bool isThis(Abstract*);
};

class FileType:public Abstract
{
public:
  bool isThis(FileType* ptr)
  {
    return false;
  }
};

这就是 Visual Studio 所说的:

非常感谢

【问题讨论】:

  • 如果您真的希望 Class Abstract 是抽象的,请将 isThis() 设为纯虚拟。

标签: c++ class polymorphism


【解决方案1】:

首先,如果你没有为Abstract中的函数提供代码,你必须使它成为virtual pure(在末尾添加= 0)。然后,派生类中函数的签名必须相同(即接受Abstract* 参数而不是FileType*)。

强烈建议您之前阅读一些 C++ 手册。它会为您省去很多麻烦。

【讨论】:

    【解决方案2】:

    错误消息说它找不到Abstract::isThis(Abstract*) 的实现;这看起来是正确的,因为您提供的代码 sn-p 没有此函数的定义。

    如果这个想法是一个纯虚函数,那么将= 0添加到声明的末尾(在;之前。但是你会得到一个进一步的错误,因为FileType没有' t 覆盖该函数:FileType::isThis(FileType*) 没有相同的参数列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      相关资源
      最近更新 更多