让编译器告诉哪些方法不具体,而不是错误'invalid new-expression of abstract class type'

Make the compiler tell which methods are not concrete instead of erroring 'invalid new-expression of abstract class type'

本文关键字:错误 invalid new-expression type class abstract of 编译器 方法      更新时间:2023-10-16

每次我在抽象类中添加非凝结虚拟方法时,编译器都会在所有从该抽象类派生的类中提供无用的错误invalid new-expression of abstract class type '...',然后我需要做git diff要搜索我之前添加的新方法,或在GCC的错误中查找注释。(添加方法和编译之间可能存在几天差异(

我可以在C 中指定一个类必须具体的(如果不是告诉原因/缺少的方法(?

回答手头的问题:

我可以在C 中指定一个类必须具体的(如果不是告诉原因/缺失的方法(?

c 没有明确的摘要混凝土类。这些概念在语言中是隐含的。摘要是一个或多个纯虚拟成员函数的存在(在类本身或继承中(,而没有这种功能。

这正是C 标准定义摘要类(§13.4/2(

[class.abstract]

抽象类是可以仅用其他类别的基类的类。除了从中得出的类的子对象外,不能创建抽象类的对象。类是抽象的,如果它至少具有一个纯虚拟函数

没有关键字,例如Java的abstract,例如在C 中。

编译器错误消息是您可以捕获错误的标准位置,例如尝试实例化仍然具有纯虚拟成员函数的类。