универсальный объект и функциональный объект

Я пытаюсь написать общее дерево. Я добавил функцию объекта для сравнения среди значений вершин. но у меня проблема:

соответствующие части заголовочного файла:

template <typename  T,typename Func>

…..

void addData(T dataIn,Func condition){

главный:

#include "gentree.h"class compare_int {
public:
int operator()(int a,int b){
if (a==b) return 0;
else    if (a>b) return -1;
else return 1;

}
};
using namespace std;

int main() {
genTree<int,compare_int> new_tr(5);
new_tr.addData(3,compare_int);
return 0;
}

Я получаю ошибки для этой строки:

new_tr.addData(3,compare_int);

ошибки:
«ожидаемое первичное выражение до ‘)» токен «и» недопустимые аргументы «есть идеи?

-1

Решение

В выражении new_tr.addData(3,compare_int); 3 является значением, но compare_int это тип. Вы не можете передать тип в качестве параметра функции.

Вы можете создать отдельное значение или передать временный объект сравнения, например

new_tr.addData(3,compare_int());
1

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

Вы передаете тип в качестве параметра вместо объекта. Вы должны создать объект compare_int введите и передайте это как:

compare_int comparator;
new_tr.addData(3, comparator);
0

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