我有一个基类 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/