我有一个关于 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_list
是 std::shared_ptr<foo>
的集合(即指向 foo
对象的共享指针)。
foo_list.push_back(a)
试图将 foo
实例添加到 foo_list
- 显然这不会起作用,因为类型不同(一个是共享指针,另一个不是)
你需要这样的东西:
auto a = std::make_shared<foo>();
foo_list.push_back(a);
我对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_list
是 std::shared_ptr<foo>
的集合(即指向 foo
对象的共享指针)。
foo_list.push_back(a)
试图将 foo
实例添加到 foo_list
- 显然这不会起作用,因为类型不同(一个是共享指针,另一个不是)
你需要这样的东西:
auto a = std::make_shared<foo>();
foo_list.push_back(a);