E0322:不允许使用抽象类类型 " " 的对象

E0322: object of abstract class type "" is not allowed

本文关键字:类型 对象 抽象类 不允许 E0322      更新时间:2023-10-16

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

static Class mInstance;

我收到以下错误:

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

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

更多细节:

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

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

  1. 你错误地使你的class抽象,它不应该是。解决方案很简单,只是让所有虚拟函数不纯粹并实现它们

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