E0322:不允许使用抽象类类型 " " 的对象
E0322: object of abstract class type "" is not allowed
我的头文件中有一个纯虚函数和一个静态类实例:
static Class mInstance;
我收到以下错误:
不允许抽象类类型"类"的对象:函数 " 是一个 纯虚函数。
这是什么意思,我该如何解决这个问题?
更多细节:
我希望在其他非派生类中使用 mInstance 变量。纯虚函数被派生类覆盖。我可以问我应该提供什么样的细节吗?mInstance 变量正在与我编写的 FactoryMethod 一起使用。
当你创建一个抽象class
你是在告诉编译器没有理由创建类本身的实例。这通常在定义接口时完成 - 基class
的一组方法和/或字段,这些方法和/或字段应该适用于各种继承的类,但不适用于基本身。因此,编译器可以帮助您避免无意的错误,并且不允许创建实例。所以有2种可能的解决方案:
-
你错误地使你的
class
抽象,它不应该是。解决方案很简单,只是让所有虚拟函数不纯粹并实现它们 -
你的
class
确实应该是抽象的。那么你不应该有类的实例,无论是否静态。通常,当您有接口时,您使用指向基类的指针或引用,并将它们分配给实现接口的派生类。在您的情况下应该做什么尚不清楚,因为我们没有足够的信息,最简单的方法是使该静态变量成为指针(可能是一个聪明的指针(并将其分配给某处派生类的实例。
相关文章:
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- C++ 多态模板类,模板类型对象的实例化
- 如何分配适合容纳 T 类型对象的缓冲区(可能过度对齐、可能有运算符 new 等)
- 如何构造一个 std::variant 类型对象,其自身 Templated 和构造函数转发参数
- C++:初始化指向具有不同类型对象的指针数组
- 在类 C++ 中构造的模板类型对象
- 如何将颁发者名称设置为x509_req类型对象
- 将任何数据类型/对象作为参数传递以确定其大小
- 将引用类型对象的数组从C#封送到C++
- <T> 从类型对象创建类型<T1>对象的构造函数
- C++是否有现有的方法来检查对象是否是派生类型对象
- C 模板:创建与现有对象相同的类型对象
- 链接列表中的虚函数 - 多种返回类型(对象)
- 没有适当操作员()的类型对象的呼叫
- 制作垫子类型对象的数组.输出窗口显示同一帧
- 抽象类型对象的分配
- 在std::list中就地创建自定义类型对象
- 接受泛型列表类型对象的参数
- C++-将模板类型对象强制转换为特定的数据类型
- 试图在C++中打印存储在类型对象数组中的信息