gpt4 book ai didi

c++ - 前向声明派生类在基类中使用会导致缺少默认构造函数错误

转载 作者:行者123 更新时间:2023-11-28 08:00:33 25 4
gpt4 key购买 nike

有一个复杂的程序不断抛出缺少默认构造函数的错误,经过大量修改后,我发现完全相同的场景会出现相同的错误。这有什么问题吗?

class B;

class A
{
public:
A() {instance = new B;}
virtual ~A() {delete instance;}
private:
A*instance;
};

class B : public A
{
public:
B(){}
}

不能转发声明派生类在基类中使用吗?

最佳答案

如果编译器对 B 类一无所知,new B 怎么能成功呢?如果将成员函数实现移出类 AB 的定义下方,它应该可以工作:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com