如何分配unique_ptr 从多个继承的类对象?

问题描述 投票:0回答:1

我有这个代码我试图从多个继承的类对象中分配基类的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>();
}
c++ multiple-inheritance unique-ptr
1个回答
3
投票

这里的问题是继承树搞砸了。如果你要在I中使用来自C的多个虚拟继承,那么AB必须虚拟地继承它,否则C将最终导致两个I子对象导致转换问题:

class A : public  virtual I {
};

class B : public virtual I {
};
© www.soinside.com 2019 - 2024. All rights reserved.