add_edge вызывает «отсутствие функции для вызова ошибки»

Я получаю «нет функции для вызова» в моей функции add_edge. Boost определенно включен правильно, поэтому я не думаю, что это проблема. Вот функция, в которой она вызывается:

void initializeGraph(Graph &g,
Graph::vertex_descriptor &start,
Graph::vertex_descriptor &end, ifstream &fin)
// Initialize g using data from fin.  Set start and end equal
// to the start and end nodes.
{
edgeProperties e;

int n, i, j;
int startId, endId;
fin >> n;
fin >> startId >> endId;
Graph::vertex_descriptor v;

// Add nodes.
for (int i = 0; i < n; i++)
{
v = add_vertex(g);
if (i == startId)
start = v;
if (i == endId)
end = v;
}

while (fin.peek() != '.')
{
fin >> i >> j >> e.weight;
add_edge(i,j,e,g);
}
}

И вот как я назвал функцию:

Graph g;
Graph::vertex_descriptor start, end, curr;
initializeGraph(g, start, end, infile);

Любые идеи о том, почему это происходит, были бы великолепны, потому что я действительно потерян!

1

Решение

Вы не можете привести отдельный пример. Собирая воедино минимум из того, что я вижу, проблем нет:

Жить на Колиру

#include <boost/graph/adjacency_list.hpp>
#include <fstream>

struct edgeProperties {
double weight;
};

using Graph = boost::adjacency_list<boost::vecS, boost::vecS,boost::directedS, boost::no_property, edgeProperties>;

void initializeGraph(Graph &g, Graph::vertex_descriptor &start, Graph::vertex_descriptor &end, std::ifstream &fin)
// Initialize g using data from fin.  Set start and end equal to the start and end nodes.
{
edgeProperties e;

int n, i, j;
int startId, endId;
fin >> n;
fin >> startId >> endId;
Graph::vertex_descriptor v;

// Add nodes.
for (int i = 0; i < n; i++) {
v = add_vertex(g);
if (i == startId)
start = v;
if (i == endId)
end = v;
}

while (fin.peek() != '.' && fin >> i >> j >> e.weight) {
add_edge(i, j, e, g);
}
}

#include <boost/graph/graph_utility.hpp>

int main() {
std::ifstream infile("input.txt");
Graph g;
Graph::vertex_descriptor start, end/*, curr*/;
initializeGraph(g, start, end, infile);

print_graph(g);
}

Для input.txt:

5
0 4
2 3 1
1 2 1
3 4 1
0 2 1
.

Печать:

0 --> 2
1 --> 2
2 --> 3
3 --> 4
4 -->
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]