【发布时间】:2020-04-06 18:19:16
【问题描述】:
我正在创建一个无向图,每次我将邻居 A 添加到节点 B 时,我都必须将节点 B 添加为 A 的邻居,但我的方法不起作用。
Non-const lvalue reference to type 'Element *' cannot bind to a temporary of type 'Element *'
class Element
{
std::vector<Element *> m_neighbours;
private:
public:
void addNeighbour(Element*& neighbour)
{
m_neighbours.push_back(neighbour);
neighbour->addNeighbour(this);
}
};
- 发生了什么?
- 最好的解决方法?
【问题讨论】:
-
emplace_back指针而不是push_back的动机是什么? -
通过引用传递指针对我来说似乎也是一种代码味道,尤其是因为它在函数内没有改变。
-
我改了
-
但是如果我在理论上不通过引用传递它,我有一个副本,所以在调用 addNeighbour 时我不会调用真正的邻居不是吗?
-
@HectorEstebanCabezos 您将拥有指针的副本,而不是被指向的东西的副本。
标签: c++ pointers reference this rvalue