C++ 从没有构造函数的接口继承从具有受保护构造函数的类继承

C++ 从没有构造函数的接口继承从具有受保护构造函数的类继承,c++,inheritance,constructor,C++,Inheritance,Constructor,虽然我怀疑这里的答案是重构,但由于时间限制,我希望避免重构 我有一个C类,它公开继承自接口a,公开继承自接口B,公开继承自类O O有一个受保护的构造函数。 A和B没有构造函数(或者至少我没有定义构造函数。它们是继承的吗?被删除了?) C有一个公共构造函数。调用所述构造函数会导致编译错误: “B::B(void)”:尝试引用已删除的函数 使用visual studio 2015 同样,如果可能的话,我们希望避免一次大的重构。有快速的解决方案吗 编辑:当调用C的构造函数时,它的形式是 O*objec

虽然我怀疑这里的答案是重构,但由于时间限制,我希望避免重构


我有一个C类,它公开继承自接口a,公开继承自接口B,公开继承自类O

O有一个受保护的构造函数。 A和B没有构造函数(或者至少我没有定义构造函数。它们是继承的吗?被删除了?) C有一个公共构造函数。调用所述构造函数会导致编译错误:

“B::B(void)”:尝试引用已删除的函数

使用visual studio 2015

同样,如果可能的话,我们希望避免一次大的重构。有快速的解决方案吗

编辑:当调用C的构造函数时,它的形式是
O*object=newc()

我认为这与


通过为接口提供受保护的构造函数找到解决方法。不是很理想,但很有效,谢谢大家。

“公开继承自接口A,公开继承自接口A”-嗯,什么?A从自身继承?C正在尝试调用B的默认构造函数,该构造函数显然已被删除(如果您不向我们展示,则无法判断)。如果有方法实例化B,则最好在C的构造函数中显式地执行该操作。也许这与此相关@User2357112Whoops,从A继承而从B继承。现在已修复。@DeiDei我没有为A或B显式编写构造函数,但我也没有删除它们。他们会从O继承吗?他们会得到默认的c'tors吗?
class C : public A {
public:
C(){};
~C(){};
}

C::C() {
this->property = value;
}

class O {
public:
virtual ~O(){};
protected:
O(){};
}

class B : public O {
public:
virtual ~B(){};
}

class A : public B {
public:
virtual ~A(){};
}