c++ - E0322: 抽象类类型“”的对象是不允许的
问题描述
我的头文件中有一个纯虚函数和一个静态类实例:
static Class mInstance;
我收到以下错误:
抽象类类型“Class”的对象是不允许的:函数“”是一个纯虚函数。
这是什么意思,我该如何解决?
更多细节:
我的愿望是在其他非派生类中使用 mInstance 变量。纯虚函数被派生类覆盖。请问我应该提供什么样的细节?mInstance 变量与我编写的 FactoryMethod 一起使用。
解决方案
当您创建抽象时class
,您是在告诉编译器没有理由创建类本身的实例。这通常在您定义一个接口时完成 - 一组方法和/或字段的基础class
应该适用于各种继承的类,但不适用于基础本身。因此编译器可以帮助您避免无意的错误,并且不允许创建实例。所以有两种可能的解决方案:
你
class
错误地做了你的摘要,它不应该是。解决方案很简单,只需让所有虚函数都不是纯的并实现它们你
class
确实应该是抽象的。那么你不应该有类的实例,不管是不是静态的。通常当你有接口时,你使用指针或对基类的引用,并将它们分配给实现接口的派生类。在您的情况下应该做什么尚不清楚,因为我们没有足够的信息,在您的情况下最简单的是使该静态变量成为指针(可能是智能变量)并将其分配给某个实例的派生类。
推荐阅读
- regex - 匹配以不同字母开头和结尾的单词
- typescript - TS2339:“全局”类型上不存在属性“导航器”
- ios - iOS 和 android 平台上的应用程序安全性
- jquery - 更改根的 HTML 颜色选择器:css 变量
- python-3.x - paramiko stdout 的输出错误地传输行
- sql - 我如何计算咨询的人数
- extjs - 如何从 Web 浏览器 CORS 策略阻止的 Ajax 请求 (POST) 中的 Web 服务中检索数据
- go - 无法评估字段
在类型字符串中 - arrays - 我可以从保存在 UserDefaults 中的数据中填充数组吗?
- php - PHP将数组排序为两列