我有这段代码,我正在尝试从多个继承的类对象中分配基类的 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
中使用来自 I
的多重虚拟继承,那么 A
和 B
都必须虚拟继承它,否则 C
将以两个 I
子对象结束,从而导致转换问题:
class A : public virtual I {
};
class B : public virtual I {
};
关于c++ - 如何从多个继承的类对象中分配 unique_ptr<base>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781397/