Привет всем!у меня проблема... значит создал функцию с параметром указатель на функцию
void Graph::show_edge(void (*visit)(const string&, const string&)) const
{
for(size_t i = 0; i < m_edge.size(); i++)
for(size_t j = 0; j < m_edge[i].size(); j++)
if(m_edge[i][j])
visit(get_vertex(i), get_vertex(j));
}
теперь когда я вызываю эту функцию и вписываю в параметр лямду функцию
else if(boost::regex_match(lineEdit->text().toStdString(), show_vertex))
{
pm_graph->show_edge([this](const string& str1, const string& str2)
{
pm_show->text_label("Вершина ");
pm_show->text_label(QString::fromStdString(str1));
pm_show->text_label(" смежна с вершиной ");
pm_show->text_label(QString::fromStdString(str2));
pm_show->text_label("\n");
});
pm_show->show_scroll();
}
компилятор сообщаяет о такой ошибки
/home/september/Проекты/visual_graph/visualizer_graph/visualizer.cpp:114: ошибка: no matching function for call to 'Graph::show_edge(Visualizer::slot_perform()::<lambda(const string&, const string&)>)'
потом начал делать по другому, т.е. создал функцию
void visit(const string& str1, const string& str2)
{
pm_show->text_label("Вершина ");
pm_show->text_label(QString::fromStdString(str1));
pm_show->text_label(" смежна с вершиной ");
pm_show->text_label(QString::fromStdString(str2));
pm_show->text_label("\n");
}
потом вызваю метод show_edge c параметром visit
else if(boost::regex_match(lineEdit->text().toStdString(), show_vertex))
{
pm_graph->show_edge(visit);
pm_show->show_scroll();
}
компилятор выдает такую ошибку
/home/september/Проекты/visual_graph/visualizer_graph/visualizer.cpp:107: ошибка: no matching function for call to 'Graph::show_edge(<unresolved overloaded function type>)'
кстатит функция show_edge вызываю с слоте - функции...
что я делаю не так ? где моя ошибка ?
c++, qt