泛型对象和函数对象

generic object and function object

本文关键字:对象 函数 泛型      更新时间:2023-10-16

我尝试编写通用树。我添加了函数对象来比较顶点的值。但我有问题:

头文件的相关部分:

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);