Я пытаюсь написать общее дерево. Я добавил функцию объекта для сравнения среди значений вершин. но у меня проблема:
соответствующие части заголовочного файла:
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);
ошибки:
«ожидаемое первичное выражение до ‘)» токен «и» недопустимые аргументы «есть идеи?
В выражении new_tr.addData(3,compare_int);
3 является значением, но compare_int
это тип. Вы не можете передать тип в качестве параметра функции.
Вы можете создать отдельное значение или передать временный объект сравнения, например
new_tr.addData(3,compare_int());
Вы передаете тип в качестве параметра вместо объекта. Вы должны создать объект compare_int
введите и передайте это как:
compare_int comparator;
new_tr.addData(3, comparator);