C++ 对智能指针向量使用push_-back方法时应用程序崩溃

C++ 对智能指针向量使用push_-back方法时应用程序崩溃,c++,C++,我有一个用于赋值的测试应用程序,其中我必须将共享指针推回到共享指针向量中。然而,它是崩溃的推回,我不知道为什么 我尝试移动共享的_ptr,而不是将其复制到向量,但仍然看到相同的问题。我试图调试该问题,但由于某些原因,在单击变量后,这些变量没有显示在调试器中(可能是IDE问题)。我确实在堆栈溢出上看到了类似的问题,但这与调用push_back之前初始化共享指针的问题不同 //Fill - will loop through and ask the user what elements to add

我有一个用于赋值的测试应用程序,其中我必须将共享指针推回到共享指针向量中。然而,它是崩溃的推回,我不知道为什么

我尝试移动共享的_ptr,而不是将其复制到向量,但仍然看到相同的问题。我试图调试该问题,但由于某些原因,在单击变量后,这些变量没有显示在调试器中(可能是IDE问题)。我确实在堆栈溢出上看到了类似的问题,但这与调用push_back之前初始化共享指针的问题不同

//Fill - will loop through and ask the user what elements to add
void fill(std::vector<std::shared_ptr<Test>> &vec, int num)
{
    for(int i {1}; i <= num; i++)
    {
        std::cout << "Enter data pointer [" << i << "] : ";
        int data {};
        std::cin >> data;
        std::shared_ptr<Test> data_ptr = std::make_shared<Test> (data);
        std::cout << "Created shared pointer for " << data_ptr->get_data() << 
        std::endl; //debug
        vec.push_back(std::move(data_ptr));
        std::cout << "Added to vector" << data_ptr->get_data() << std::endl; 
        //debug (crash issue is with the pushback method)
    }
}
//Fill-将循环并询问用户要添加哪些元素
空白填充(标准::向量和向量,整数)
{

对于(int i{1};i当您从
shared_ptr
移动时,moved from变量无效(在本例中为null)


在推送之前调用
data\u ptr->get\u data()
,这很好。但是在推送之后(通过移动),第二次调用
data\u ptr->get\u data()
将使用(现在从)智能指针,因此会崩溃。

当您从
共享\u ptr
移动时,moved from变量无效(在本例中为null)


在按下之前调用
data\u ptr->get\u data()
,这很好。但是在按下(通过移动)之后,第二次调用
data\u ptr->get\u data()
将使用(现在从)智能指针-因此会崩溃。

什么是
测试
?还有什么是
get\u data()
?我不认为它是…的一部分,您在控制台中看到了吗?
std::cout get_data()返回作为测试类一部分存储的int。我看到了“为”cout文本创建的共享指针。什么是
测试
?还有什么是
get_data()
?我不认为它是…的一部分,您在控制台中看到了吗?
std::cout get_data()正在返回作为测试类一部分存储的int。我看到的是“已创建的共享指针”cout text.谢谢你的评论,我已经修正了移动。睡了一觉后,我注意到我最初创建向量的方式不正确,当将对象放入向量时,向量崩溃。我已经修正了,我的程序现在正在运行。谢谢你的评论,我已经修正了移动。睡了一觉后,我注意到首先,我是如何创建向量的是不正确的,当将对象放入向量时,它会崩溃。我已经解决了这个问题,我的程序现在正在运行。