虽然我怀疑这里的答案是重构,但由于时间限制,我想避免这种情况。
我所拥有的是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();
答案 0 :(得分:0)
我认为这与"default constructor cannot be referenced" in Visual Studio 2015
有关通过给接口保护构造函数找到解决方法。不理想,但有效,谢谢大家。