我尝试编写通用树。我添加了函数对象来比较顶点的值。但我遇到了问题:
头文件的相关部分:
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);
错误是: “在'之前预期的初级表达'''令牌”和“无效的参数” 任何想法?
答案 0 :(得分:1)
在表达式new_tr.addData(3,compare_int);
中,3是一个值,但compare_int
是一个类型。您不能将类型作为参数传递给函数。
您可以创建单独的值,也可以传递临时比较对象,例如
new_tr.addData(3,compare_int());
答案 1 :(得分:0)
您将类型作为参数而不是对象传递。您必须创建compare_int
类型的对象并将其传递为:
compare_int comparator;
new_tr.addData(3, comparator);