Class 当我试图设置共享的值时,为什么访问位置违反了读取位置<;T>;要素

Class 当我试图设置共享的值时,为什么访问位置违反了读取位置<;T>;要素,class,c++11,shared-ptr,Class,C++11,Shared Ptr,当我试图设置类对象的数据时,我得到了访问冲突读取位置 void make_heap_array() { //Example of ptr_arr is define: It's define in class variables: vector<shared_ptr<Data_Node<Item>>> ptr_arr; int total_data = arr_data.size(); for (int i = 0; i <

当我试图设置类对象的数据时,我得到了访问冲突读取位置

void make_heap_array()
{
    //Example of ptr_arr is define: It's define in class variables: vector<shared_ptr<Data_Node<Item>>> ptr_arr;

    int total_data = arr_data.size();

    for (int i = 0; i < total_data; i++)
    {
        shared_ptr<Data_Node<Item>> new_node = shared_ptr<Data_Node<Item>>();
        Item data = arr_data[i];
        new_node->set_data(data); //Error: Access violation reading location
        ptr_arr.push_back(new_node);

    }
}
void make_heap_array()
{
//ptr_arr的例子是define:它在类变量中定义:vector ptr_arr;
int total_data=arr_data.size();
对于(int i=0;i设置_数据(数据);//错误:访问冲突读取位置
ptr_arr.push_back(新节点);
}
}
Data_Node是一个使用模板的类,只有很少的方法,下面是它的代码:

template <class Item>
class Data_Node
{
    Item info; 
public:
    const Item& data() const
    {
        return info;
    }
    void set_data(const Item& new_data)
    {
        info = new_data;
    }
};
模板
类数据节点
{
项目信息;
公众:
常量项和数据()常量
{
退货信息;
}
无效集合数据(常数项和新数据)
{
info=新数据;
}
};

new\u节点
为空(您可能已经自己检查过了),因此
new\u节点->set\u数据(数据)
具有未定义的行为。(共享指针的默认构造状态为空。)

你知道我如何修复它吗?@Gaurav:fix什么?我不知道你的目标是什么。也许可以构造一个保存对象的共享指针,例如,使用
make_shared
?好吧,我正在尝试创建共享的数据节点对象。