C ++读取访问冲突。 _Val为nullptr

时间:2019-01-17 19:52:17

标签: c++ pointers smart-pointers

我正在尝试设置智能指针所指向的结构中包含的变量的值。

对于上下文:

// Represents a node in the search tree.
struct SNode
{
  int x;             // x coordinate
  int y;             // y coordinate
}

指针(声明为unique_ptr<SNode>start)称为start

我正在从文件中读取数据,这是问题所在:

inFile >> move(start)->x;

执行后,将执行此行,并且在“ istream”中发生以下错误:

”引发未处理的异常:读取访问冲突。 _Val是nullptr。”

我对智能指针的概念还很陌生,所以我不太了解我个人在这里是否做错了什么,因此可以提供任何帮助。

1 个答案:

答案 0 :(得分:3)

智能指针拥有原始指针,因此它需要指向某个东西。该错误清楚地表明它没有指向任何对象。您在代码中的任何地方都有newstd::make_unique<>语句吗?

您需要这样的东西:

unique_ptr<SNode> start(new SNode);

或者:

unique_ptr<SNode>start = std::make_unique<SNode>();