我对std :: vector <shared_ptr>有疑问

时间:2019-10-22 22:42:09

标签: c++ class c++11 shared-ptr stdvector

我对std :: vector的结构有疑问

如果有一些称为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); 
}

像这个例子一样,如果智能指针在矢量中,如何将原始类放在矢量中?

1 个答案:

答案 0 :(得分:3)

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

foo_list.push_back(a)试图向foo中添加foo_list实例-显然,这是行不通的,因为类型不同(一个是共享指针,另一个不是共享指针)< / p>

您需要以下内容:

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