首页 > 解决方案 > E0322: 抽象类类型“”的对象是不允许的

问题描述

我的头文件中有一个纯虚函数和一个静态类实例:

static Class mInstance;

我收到以下错误:

抽象类类型“Class”的对象是不允许的:函数“”是一个纯虚函数。

这是什么意思,我该如何解决?

更多细节:

我的愿望是在其他非派生类中使用 mInstance 变量。纯虚函数被派生类覆盖。请问我应该提供什么样的细节?mInstance 变量与我编写的 FactoryMethod 一起使用。

标签: c++abstract-classpure-virtual

解决方案


当您创建抽象时class,您是在告诉编译器没有理由创建类本身的实例。这通常在您定义一个接口时完成 - 一组方法和/或字段的基础class应该适用于各种继承的类,但不适用于基础本身。因此编译器可以帮助您避免无意的错误,并且不允许创建实例。所以有两种可能的解决方案:

  1. class错误地做了你的摘要,它不应该是。解决方案很简单,只需让所有虚函数都不是纯的并实现它们

  2. class确实应该是抽象的。那么你不应该有类的实例,不管是不是静态的。通常当你有接口时,你使用指针或对基类的引用,并将它们分配给实现接口的派生类。在您的情况下应该做什么尚不清楚,因为我们没有足够的信息,在您的情况下最简单的是使该静态变量成为指针(可能是智能变量)并将其分配给某个实例的派生类。


推荐阅读