4

次のように、Graph.h でコピー コンストラクターが宣言されているクラス Graph があります。

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

ここで答えを読んでくださいconstつまり、ではなくが欠落しています&。成功する:

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

非 const 参照にテンポラリをバインドすることはできません。

于 2012-04-29T04:04:11.067 に答える