【发布时间】:2018-09-22 13:19:31
【问题描述】:
这是一段简单的代码。我需要帮助的是我写了“???”的两个地方。
目标是将临时指针传递给容器类,然后容器类将成为该对象的唯一所有者。但是,我写了“???”的两个地方不知道该写什么。
具体来说,我在初始化器列表中写了什么,当我实际实例化我的容器类时我应该写什么?
class abstractBase
{
virtual void method() = 0;
};
class derived : public abstractBase
{
// ...
};
class container
{
std::unique_ptr<abstractBase> ptr;
container(std::unique<abstractBase> input)
: ??? //What do I write here to make input = ptr?
{}
};
int main()
{
container instance(???) //what do I write here to pass a temporary ptr of type derived?
}
对于第一个,我想也许
: ptr(std::move(input))
会这样吗?
对于第二个,我不确定。也许只是std::make_unique<derived> input?
【问题讨论】:
-
我建议为 abstractBase 使用虚拟析构函数。 stackoverflow.com/questions/274626/what-is-object-slicing
标签: c++ pointers smart-pointers