3
家伙!我试图做到这一点:指针函数C++
int (*filterFunc)(Medicine* criteria, Medicine*);
DynamicVector<Medicine>* filter2(Medicine* criteria, filterFunc f); //error
,但我得到一个错误:“filterFunc”不是一个类型
我试图做到这一点,因为我想一般的过滤器,那么我可以这样做:
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;
}
我该如何解决这个问题?
如果你还记得的声明可以使用的typedef变成一种类型,它更容易阅读和写:'的typedef INT filter_function(医学*,医药*)'然后你可以作为'filter_function使用* F',这也并不模糊的事实,这是一个指针。 – 2013-04-06 12:15:07