我有一段这样的代码:
class Data
{
public:
Data(const std::vector<int> &_data)
{
my_data = _data;
}
private:
std::vector<int> my_data;
};
int main()
{
std::vector<std::shared_ptr<Data>> vec = {
std::shared_ptr<Data>(new Data(std::vector<int>({ 1, 2 ,3 }))),
std::shared_ptr<Data>(new Data(std::vector<int>({ 3, 4 ,5 })))
};
// breakpoint
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不知何故,当我暂停程序来检查值(在断点处)时,第一个(vec[0])元素被销毁,而第二个元素(vec[1])很好.这里发生了什么?这是编译器中的错误吗?我正在使用新的Visual Studio 2013.