如何正确制作虚拟方法? (C ++)

时间:2012-12-17 21:01:06

标签: c++ class polymorphism

这就是我所拥有的:

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

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

这就是Visual Studio的作用:

enter image description here

非常感谢

2 个答案:

答案 0 :(得分:4)

首先,如果您不在Abstract中提供该函数的代码,则必须使其为虚拟纯色(最后添加= 0)。然后,派生类中函数的签名必须相同(即接受Abstract*参数而不是FileType*)。

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

答案 1 :(得分:1)

错误消息表明找不到Abstract::isThis(Abstract*)的实现;这似乎是正确的,因为您提供的代码段没有此函数的定义。

如果想要将其作为纯虚函数,那么将= 0添加到声明的末尾(;之前。但是那样你会得到进一步的错误,因为{ {1}}不会覆盖该函数:FileType没有相同的参数列表。