派生类(纯虚拟C ++)

时间:2014-12-16 15:57:40

标签: c++ class virtual derived

我在使用纯类虚拟方法的类库时遇到了问题。 该方法应该是虚拟的。

我收到此错误:

Error: object of abstract class type "Membro" is not allowed: function "Membro::mensalidade" is a pure virtual function

enter image description here

任何人都可以提供帮助吗?

谢谢!

5 个答案:

答案 0 :(得分:2)

您无法实例化抽象类。

任何类都是抽象的,如果它包含至少一个纯虚方法(例如在函数签名末尾有= 0的任何类)。

您必须实例化一个派生自抽象类的类(必须实现纯虚函数,而不是抽象本身),并返回指向它的指针。指针的类型可以是抽象类的类型,它指向的对象必须是抽象类的子类,允许您以多态方式访问派生类

答案 1 :(得分:2)

就像错误说Membro::mensalidade是纯虚函数一样。这意味着您不能直接使用Membro,但必须在子类中实现它并至少重新实现所有纯虚方法。

答案 2 :(得分:2)

如果一个类包含至少一个纯虚函数,那么该类是抽象的。这意味着您无法创建该类的对象。抽象类充当更多派生类的接口类。

但是,您可以定义纯虚函数。但除了给同事留下深刻印象之外,这个功能的用途有限。

答案 3 :(得分:2)

问题从错误消息中可以清楚地看出:您可能无法实例化抽象类的对象。

但是,似乎不需要在您显示的函数中创建抽象类的对象。据我所知,该函数使用给定的字符串bi搜索对象。您可以在某些搜索方法中使用lambda表达式。

问题在于功能的设计是不正确的。 要获得更准确的答案,您应该显示函数以及membros的类型。

答案 4 :(得分:0)

您必须在派生类中使用virtual方法。它是纯虚拟的,以确保您在从类派生时实现它。这也意味着该方法没有默认实现。

这类课程名称为 Abstract Classes 。或接口