Нет подходящей функции для вызова конструктора копирования
У меня есть класс 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)
Вы не можете привязать временную ссылку к неконстантной ссылке.