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
?好吧,我正在尝试创建共享的数据节点对象。