自动关键字和smartpointers一起使用?

时间:2018-04-12 15:55:27

标签: c++

我可以:

auto o1 = new Content;

但不能:

std::shared_ptr<auto> o1(new Content);
std::unique_ptr<auto> o1(new Content);

我应该做什么?

2 个答案:

答案 0 :(得分:3)

您可以像这样使用make_shared / make_unique

auto o1 = std::make_shared<Content>(); // Pass any arguments here as you would normally.
auto o2 = std::make_unique<Content>(); // Pass any arguments here as you would normally.

这些函数将所有参数转发给(在本例中)Content的构造函数,您可以使用auto,只需编写一次类型。

答案 1 :(得分:2)

你应该:

auto o1 = std::make_unique<Content>();
auto o2 = std::make_shared<Content>();