我在使用纯类虚拟方法的类库时遇到了问题。 该方法应该是虚拟的。
我收到此错误:
Error: object of abstract class type "Membro" is not allowed: function "Membro::mensalidade" is a pure virtual function
任何人都可以提供帮助吗?
谢谢!
答案 0 :(得分:2)
您无法实例化抽象类。
任何类都是抽象的,如果它包含至少一个纯虚方法(例如在函数签名末尾有= 0的任何类)。
您必须实例化一个派生自抽象类的类(必须实现纯虚函数,而不是抽象本身),并返回指向它的指针。指针的类型可以是抽象类的类型,它指向的对象必须是抽象类的子类,允许您以多态方式访问派生类 。
答案 1 :(得分:2)
就像错误说Membro::mensalidade
是纯虚函数一样。这意味着您不能直接使用Membro
,但必须在子类中实现它并至少重新实现所有纯虚方法。
答案 2 :(得分:2)
如果一个类包含至少一个纯虚函数,那么该类是抽象的。这意味着您无法创建该类的对象。抽象类充当更多派生类的接口类。
但是,您可以定义纯虚函数。但除了给同事留下深刻印象之外,这个功能的用途有限。
答案 3 :(得分:2)
问题从错误消息中可以清楚地看出:您可能无法实例化抽象类的对象。
但是,似乎不需要在您显示的函数中创建抽象类的对象。据我所知,该函数使用给定的字符串bi搜索对象。您可以在某些搜索方法中使用lambda表达式。
问题在于功能的设计是不正确的。 要获得更准确的答案,您应该显示函数以及membros的类型。
答案 4 :(得分:0)
您必须在派生类中使用virtual
方法。它是纯虚拟的,以确保您在从类派生时实现它。这也意味着该方法没有默认实现。
这类课程名称为 Abstract Classes 。或接口。