智能指针如何初始化(指向vector的智能指针)

jSORoROWy 2019-08-27 05:12:31
我定义了一个char*类型的vector,现在先用一个智能指针指向它,我该怎么做

我尝试这么写

std::vector<char*> vec_content_;
std::shared_ptr< std::vector<char*> > vec_ptr_ = &vec_content_;

但是出现error
引用
error: could not convert ‘&((file_node_n*)this)->file_node_n::vec_content_’ from ‘std::vector<char*>*’ to ‘std::shared_ptr<std::vector<char*> >’

说不能从std::vector<char*>*转化为std::shared_ptr<std::vector<char*> >
我怎么才能赋一个智能指针的地址呢
...全文
1266 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞雪蝶映 2019-08-27
  • 打赏
  • 举报
回复 1
建议用这个 auto vec_ptr = make_shared<std::vector<char*>>();
真相重于对错 2019-08-27
  • 打赏
  • 举报
回复
你是错误使用shared_ptr shared_ptr是包装处于指向堆上的数据的指针的。 而不能用栈上的变量的地址,来初始化他。因为shared_ptr要负责这个变量的生死,函数结束后那个变量就自动没了, 而且shared_ptr 没有合适构造函数来接受指针。因此你用错了。 类似代码 ----===== int n=10; shared_ptr<int> p = &n//错误 ============= int* n= new int; shared_ptr<int> p=n;//错误 ======= int * n = new int ; shared_ptr<int> p(n);//正确。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧