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_);
我正在尝试创建一个节点列表,我有两个 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_);