C++:在映射中存储类对象(错误:获取类型为"Node"的临时对象的地址)
C++: Storing class objects in a map (error: taking the address of a temporary object of type 'Node')
我正在尝试创建一个节点列表,我有两个类: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]);
}
我得到错误:
错误:获取类型为"节点"的临时对象的地址
如何存储对类Node的引用?
提前感谢!
您不想存储对它的引用。它在表达式之后就不存在了。正如错误告诉你的那样,这是"暂时的"。您应该直接存储节点,或者存储一个指针并使用new
来分配它们。
编辑:从你的评论中,我注意到connections_实际上需要一个指针(正如我所说的,你可以在上面使用)。您需要分配新节点。
connections_[source] = new Node(source, weightedlist_);
connections_[target] = new Node(source, weightedlist_);
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 为什么我得到变量"Node"不是类型名称错误
- 无法使用 'const Node *' 类型的右值初始化 'Node *' 类型的变量
- 函数与返回类型 node* 与 C++ 中的 OOP 结合使用
- 'Node'不命名类型链表
- 我们可以从相同类型的范围中取一个"std::chrono::毫秒"变量吗
- 请求从非标量类型"node*"转换为标量类型 "node"
- C++:在映射中存储类对象(错误:获取类型为"Node"的临时对象的地址)
- 获取存储在 YAML::Node for yaml-cpp 中的值的类型
- find_if错误:从类型为"node*"的表达式初始化类型"const node&"的引用无效
- 从类型 'YAML::Node&' 的右值初始化 类型的非常量引用无效 'YAML::Node'
- 使用main.cpp、node.cpp/.h和slist.cpp/.h[var SLNode未命名类型:error]构建
- C2678 二进制"<":未找到采用 'const Node' 类型左操作数的运算符(或没有可接受的转换)
- 如果在调用时没有取赋值操作符的返回类型,将会发生什么?
- Node.js c++绑定错误:'('标记之前期望的构造函数、析构函数或类型转换
- 成员引用基类型 'Node<int> *' 不是结构或联合
- 检查node类型的数组是否为完整的c++
- Node是什么样的类型