如何通过引用传递对象到构造函数

gia*_*otb 2 c++ constructor reference function object

我想通过引用将对象传递给Contructor,但是我遇到了问题,因为我不知道如何将它绑定到类的变量.

在这里,我发布了一些代码,错误上升了.

class ShortestPath{
    public:
        ShortestPath(Graph& graph): graph(graph){};[...]
    private:
        Graph *graph; 
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,错误上升是:

cannot convert `Graph' to `Graph*' in initialization 
Run Code Online (Sandbox Code Playgroud)

如果我写

ShortestPath(Graph& graph): *graph(graph){};[...]
Run Code Online (Sandbox Code Playgroud)

错误是

expected identifier before '*' token 
Run Code Online (Sandbox Code Playgroud)

当我调用构造函数时,我应该这样调用吗?最短路径(图表);

abd*_*lah 6

您必须以这种方式更改您的代码:

class ShortestPath{
public:
    ShortestPath(Graph& graph): graph(graph){};[...]
private:
    Graph &graph; 
}
Run Code Online (Sandbox Code Playgroud)

要么:

 class ShortestPath{
public:
    ShortestPath(Graph& graph): graph(&graph){};[...]
private:
    Graph *graph; 
}
Run Code Online (Sandbox Code Playgroud)

  • 你应该添加原因,因为它比如何更重要. (2认同)