Hi,
This is the code segment:
template<class type> void merge_sort(type inputs[], int p, int r, int (*comp)(type, type));
typedef struct
{
vertex vertices[MAX_VERTEX];
int number_vertices;
int adj_matrix[MAX_VERTEX][MAX_VERTEX];
} graph;
int compare_vertex(vertex v1, vertex v2)
{
if (v1.f < v2.f)
{
return -1;
}
else if (v1.f > v2.f)
{
return 1;
}
else
{
return 0;
}
}
int main() {
graph* g;
int (*cmp)(vertex v1, vertex v2);
cmp = compare_vertex;
int num_vertices = g->number_vertices;
merge_sort<vertex>(g->vertices, 0, num_vertices, cmp);
}
Why am I still getting no matching function? because as observed from the declaration of merge_sort it takes an array of template type, 2 int, 1 pointer to a function having 2 arguments of type. In the calling routine the merge_sort is called with template type vertex with arguments- an array of vertices, 2 int, and a function pointer taking 2 arguments of type vertex.
Thanks.