继承自没有构造函数的接口继承自带有受保护构造函数的类

时间:2016-10-29 01:29:50

标签: c++ inheritance constructor

虽然我怀疑这里的答案是重构,但由于时间限制,我想避免这种情况。

我所拥有的是C类,它公开继承自接口A,公开继承自接口B,公开继承自O类。

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

  

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

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(){};
}

使用visual studio 2015。

同样,如果可能的话,我想避免使用主要的重构器。有快速(ish)解决方案吗?

编辑:调用C的构造函数时,它的形式为     O * object = new C();

1 个答案:

答案 0 :(得分:0)

我认为这与"default constructor cannot be referenced" in Visual Studio 2015

有关

通过给接口保护构造函数找到解决方法。不理想,但有效,谢谢大家。