我有一个关于 std::vector<shared_ptr> 的问题

I have a question about std::vector<shared_ptr>

我对std::vector

的结构有疑问

如果有一些class叫foo.

我会写一些代码来解释。

class foo
{
  //do something...
};

void main(void)
{
  foo a;
  std::vector<std::shared_ptr<foo>> foo_list;

  //Is it right? If not how can I do that?
  foo_list.push_back(a); 
}

像这个例子,如果智能指针是vector,我怎么把原来的class放到vector中?

foo_liststd::shared_ptr<foo> 的集合(即指向 foo 对象的共享指针)。

foo_list.push_back(a) 试图将 foo 实例添加到 foo_list - 显然这不会起作用,因为类型不同(一个是共享指针,另一个不是)

你需要这样的东西:

auto a = std::make_shared<foo>();
foo_list.push_back(a);