Нет подходящей функции для вызова конструктора копирования

У меня есть класс 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&) [с объектом = двойной, вес = двойной]

Я не понимаю, почему это произошло; функция make_graph просто возвращает Graph:

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

Нужно ли где-нибудь '&'?

1 ответ

Решение

Прочитайте ответ здесь. Другими словами, вам не хватает constне &, Сделай это:

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

Вы не можете привязать временную ссылку к неконстантной ссылке.

Другие вопросы по тегам