我想通过引用将对象传递给Contructor,但是我遇到了问题,因为我不知道如何将它绑定到类的变量。
在这里,我发布了一些我的代码,错误也随之增加。
class ShortestPath{
public:
ShortestPath(Graph& graph): graph(graph){};[...]
private:
Graph *graph;
};
在这种情况下,错误上升是:
cannot convert `Graph' to `Graph*' in initialization
如果我写
ShortestPath(Graph& graph): *graph(graph){};[...]
错误是
expected identifier before '*' token
当我调用构造函数时,我应该这样调用吗? 最短路径(图表);
答案 0 :(得分:5)
您必须以这种方式更改代码:
class ShortestPath{
public:
ShortestPath(Graph& graph): graph(graph){};[...]
private:
Graph &graph;
}
或:
class ShortestPath{
public:
ShortestPath(Graph& graph): graph(&graph){};[...]
private:
Graph *graph;
}
答案 1 :(得分:2)
两种可能的解决方案:
通过引用传递图形并存储指针
// note that (&graph) gets the address of the graph
ShortestPath(Graph& graph): graph(&graph) {};
通过指针传递图形并存储指针
ShortestPath(Graph* graph): graph(graph) {};
答案 2 :(得分:1)
您需要获取Graph对象的地址,如下所示:
class ShortestPath{
public:
ShortestPath(Graph& graph): graph(&graph){}
private:
Graph *graph;
};
答案 3 :(得分:0)
由于您的graph
是指向Graph
的指针,因此您应该使用以下方式(作为另一个答案):
ShortestPath(Graph& graph): graph(&graph) {};
^ // Get the pointer to object
但是,如果你确定传递的graph
的生命周期大于等于ShortestPath
对象的生命周期。您可以使用引用而不是指针:
class ShortestPath{
public:
ShortestPath(Graph& graph): graph(graph){};
private:
Graph &graph;
^ // A reference to object
};