简体   繁体   English

指向函数c ++的指针

[英]pointer to function c++

guys! 伙计们! I am trying to do this: 我想这样做:

int (*filterFunc)(Medicine* criteria, Medicine*);
DynamicVector<Medicine>* filter2(Medicine* criteria, filterFunc f); //error

but I get an error: 'filterFunc' is not a type 但我收到一个错误:'filterFunc'不是一个类型

I am trying to do this because I want a general filter so then I can do this: 我试图这样做,因为我想要一个通用过滤器,所以我可以这样做:

int filterPrice(Pet* pet) {
    if (pet->price > 10 && pet->price < 100) {
        return 0;
    }
    return 1;
}

VectorDinamic* filter2(Pet* criteria, filterFunc f) {
    VectorDinamic* v = getAll(ctr->repo);
    VectorDinamic* rez = creazaVectorDinamic();
    int nrElems = getNrElemente(v);
    int i;
    for (i = 0; i < nrElems; i++) {
        Pet* pet = get(v, i);
        if (!f(criteria, pet)) {
            add(rez, copyPet(pet));
        }
    }
    return rez;
}

VectorDinamic* filterByPrice(float price) {
    Pet* criteria = createPet(1, "", "", price);
    VectorDinamic* rez = filter2(ctr, criteria, filterByPriceGr);
    destroyPet(criteria);
    return rez;
}

How can I solve this problem? 我怎么解决这个问题?

You forgot a typedef , to declare the type. 你忘了一个typedef来声明这个类型。 Otherwise this declaration just creates a variable of type int(*)(Medicine*,Medicine*) . 否则,此声明只会创建一个int(*)(Medicine*,Medicine*)类型的变量int(*)(Medicine*,Medicine*)

  typedef int (*filterFunc)(Medicine* criteria, Medicine*);
//^^^^^^^

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM