如何从多个继承的类对象分配unique_ptr <base />?

时间:2019-04-21 09:09:54

标签: c++ multiple-inheritance unique-ptr

我有这段代码,我试图从多个继承的类对象分配基类的unique_ptr。我在下面出现编译错误:

‘std::unique_ptr<I>’ and ‘std::_MakeUniq<C>::__single_object {aka
std::unique_ptr<C, std::default_delete<C> >}’)    a =
make_unique<C>();
     ^ ```

可以这样做吗?

#include <memory>     

class I {
};

class A : public I {
};

class B : public I {
};

class C : virtual public A, virtual public B {
};

using namespace std;

int main() {
    unique_ptr<I> a;
    a = make_unique<C>();
}

1 个答案:

答案 0 :(得分:3)

这里的问题是继承树被弄乱了。如果您打算使用IC的多个虚拟继承,那么AB都必须虚拟继承它,否则C将以两个{ {1}}个子对象导致转换问题:

I