E0322:不允许抽象类类型为“”的对象[关闭]

问题描述 投票:-1回答:1
我的头文件中有一个纯虚函数,并且有一个静态类实例:

static Class mInstance;

我收到以下错误:

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

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

更多详细信息:

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

c++ abstract-class pure-virtual
1个回答
2
投票
创建抽象class时,您在告诉编译器没有理由创建类本身的实例。通常,当您定义接口时-基class的一组方法和/或字段应适用于各种继承的类,但不适用于基本身。因此,编译器可帮助您避免意外错误,并且不允许创建实例。因此,有2种可能的解决方案:

  1. 您错误地将class设为摘要,应该不是。解决方案很简单,只需使所有虚函数不纯并实现它们即可]]

  2. 您的class应该确实是抽象的。然后,您不应该具有该类的实例(静态或静态)。通常,当您具有接口时,可以使用指针或对基类的引用,并将它们分配给实现该接口的派生类。您的情况尚不清楚,因为我们没有足够的信息,在您的情况下最简单的方法是使该静态变量成为指针(可能是智能指针)并将其分配给某个实例,以将其分配给某个地方的派生类。
© www.soinside.com 2019 - 2024. All rights reserved.