C ++:在地图中存储类对象(错误:获取类型'节点'的临时对象的地址)

时间:2016-04-11 20:07:17

标签: c++ class temporary

我正在尝试创建一个nodelist,我有两个类:Node&节点列表。 Node的构造函数如下所示:

Node::Node(int identifier, bool weighted){
    ID_ = identifier;
    numberOfConnections_ = 0;
    weighted_ = weighted;
}

当我尝试使用此方法在节点之间添加连接时:

void Nodelist::addOneWayConnection(int source, int target){
    connections_[source] = &Node(source, weightedlist_);    <-- error
    connections_[target] = &Node(source, weightedlist_);    <-- error
    connections_[source]->addConnection(connections_[target]);
}

我收到错误:

  

错误:获取类型为&#39; Node&#39;

的临时对象的地址

如何存储节点类的引用?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您不想存储对该引用的引用。表达后它就不复存在了。它是临时的,&#34;因为错误告诉你。您应该直接存储节点,或者存储指针并使用new来分配它们。

编辑:从您的评论我发现,connections_实际上需要一个指针(正如我上面说的那样)。您需要分配新节点。

connections_[source] = new Node(source, weightedlist_);
connections_[target] = new Node(source, weightedlist_);