非抽象类的 C++ 抽象类分配错误

标签 c++ abstract-class

我有一个基类 A 和派生类 B。我想创建一个类 B 的对象

B *myB = new B();

但是我在下面的代码中遇到了一个错误,例如“错误:无法分配抽象类型的对象”。但是,类 B 不是抽象类。

class A{
    public:
    A();
    virtual ~A();
    static void func1();
};

class B: public A{
    public:
    B(int myval);
    virtual ~B();
    void func2();
};

有人有想法吗?

最佳答案

除了例子中的语法错误,我认为这是你的问题:

class A{
 A();
 virtual ~A();
 static void func1();
 };

构造函数、析构函数和func1 被声明为private,因此您不能创建此类的实例。你应该让他们 public: (至少构造函数):

class A{
public:
 A();
 virtual ~A();
 static void func1();
 };

编辑 正如您所说的,它们实际上是公开的,这是我能看到的第二个问题:

您正在为 B 使用默认构造函数

B *myB = new B();

但你只有 B(int) 构造函数。

关于非抽象类的 C++ 抽象类分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22789409/

相关文章:

C#/C++ pInvoke 技巧

c++ - 无法编译使用 libxml++ 的简单程序,因为找不到 glibmmconfig.h

c++ - 创建一个接口(interface)和一个具体类并在 vector 中使用它们会导致调用方法时出现奇怪的行为

c++ - 纯虚函数和抽象类

c++ - sizeof(function) 有意义吗?

c++ - 从网页获取 XML

c++ - 如何提供转义字符作为命令行参数

.net - 如何在F#中声明循环依赖的抽象类

Java 显式迭代器有效。隐式 forloop 产生 "Can only iterate over an array or an instance of java.lang.Iterable"

domain-driven-design - DDD、抽象类、聚合和存储库,一个或多个存储库?