C++: Storing class objects in a map (error: taking the address of a temporary object of type 'Node')

C++: Storing class objects in a map (error: taking the address of a temporary object of type 'Node')

我正在尝试创建一个节点列表,我有两个 classes:节点和节点列表。 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]);
}

我收到错误:

error: taking the address of a temporary object of type 'Node'

如何存储对 class 节点的引用?

提前致谢!

您不想存储对此的引用。它在表达式之后不复存在。正如错误告诉您的那样,它是 "temporary,"。您应该直接存储节点,或者存储一个指针并使用 new 分配它们。

编辑:从您的评论中我注意到 connections_ 实际上需要一个指针(正如我在上面所说的那样)。您需要分配新的节点。

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