【发布时间】:2013-07-03 12:00:09
【问题描述】:
我正在使用 vector 的 shared_ptr 进行测试。目的很简单,我想返回一个vector的指针并访问其中的值。但它给出了例外。 “未处理的异常在.. std:out_of_range 在内存位置..”。我正在使用 Visual Studio 2012。
vector<int>* func()
{
boost::shared_ptr<vector<int> > vec(new vector<int>());
vec->push_back(123);
return vec.get();
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int>* result = func();
cout << result->at(0); // ERROR here
return 0;
}
【问题讨论】:
-
您不是在返回共享指针,而是在返回它包含的向量。共享包装器此时丢失。
-
@not-TonyTheLion 糟糕,糟糕的评论。请不要再写 cmets。
-
公平地说,大多数人甚至对 C 中的指针概念都感到困惑——更不用说共享指针的魔力了。共享指针是奇妙的神奇事物 - 但不像 Java 引用那么简单,因此您可以理解人们如何(非常)错误地理解它。
标签: c++ visual-c++ boost