4

我有一个类 Graph,其复制构造函数在 Graph.h 中声明,如下所示:

template<typename Object,typename Weight>              
Graph<Object,Weight>::Graph(Graph<Object,Weight>& G)

在其他地方,我尝试使用它:

Graph<double,double> G = make_graph("dense.g");

...但它给了我以下错误:

time_trialsALIST.cpp:37: 错误: 没有匹配函数调用 `Graph::Graph(Graph)'
Graph.h:142:注意:候选人是:Graph::Graph(Graph&) [with Object = double, Weight = double]

我不明白为什么会发生这种情况;make_graph 函数只返回一个图形:

Graph<double,double>  make_graph(string filename){...} 

我需要在某处使用“&”吗?

4

1 回答 1

5

在这里阅读答案。换句话说,您缺少 a const,而不是&. 做了:

template<typename Object,typename Weight>              
Graph<Object,Weight>::Graph(const Graph<Object,Weight>& G)

您不能将临时对象绑定到非常量引用。

于 2012-04-29T04:04:11.067 回答