有一个复杂的程序不断抛出缺少的默认构造函数错误,经过反复修改后,我发现完全相同的情况也产生了相同的错误。这怎么了
class B;
class A
{
public:
A() {instance = new B;}
virtual ~A() {delete instance;}
private:
A*instance;
};
class B : public A
{
public:
B(){}
}
无法转发声明派生类以在基类中使用?
最佳答案
如果编译器对类new B
一无所知,B
如何成功?如果将成员函数实现从类A
的定义下移出类B
,则它应该起作用:
class A
{
public:
A();
virtual ~A();
private:
A * instance;
};
class B : public A
{
public:
B(){}
};
A::A()
{
instance = new B;
}
A::~A()
{
delete instance;
}
无论如何,A和B到底是什么?确保有一个基类实例化一个派生类肯定是不寻常的。
关于c++ - 正向声明要在基类中使用的派生类会导致缺少默认构造函数错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11593649/