我正在尝试制作一个更通用的过滤器,所以我用 typedef 定义了一个指向函数的指针。但我在 DynamicVector* filterByQuantity(int quantity) 函数中收到错误消息。这是我正在尝试做的整个代码:
控制器.h
typedef int (*filterFunc)(Medicine* criteria, Medicine*);
DynamicVector<Medicine>* filter2(Medicine* criteria, filterFunc f);
控制器.cpp
#include "controller.h"
int filterByQuantityLess(Medicine* criteria, Medicine* p) {
if (criteria->getQuantity() > p->getQuantity()) {
return 0;
}
return 1;
}
DynamicVector<Medicine>* Controller::filter2(Medicine* criteria, filterFunc f){
DynamicVector<Medicine>* medList = repo->getAll();
DynamicVector<Medicine>* rez = new DynamicVector<Medicine>();
for(int i=0; i < medList->getLen(); i++){
Medicine* m = new Medicine(medList->getElementAtPosition(i));
if(!f(criteria, m)){
rez->addElement(*m);
}
}
return rez;
}
DynamicVector<Medicine>* filterByQuantity(int quantity){
Medicine* criteria = new Medicine(1,"",1,quantity);
DynamicVector<Medicine>* rez = filter2(criteria, filterByQuantityLess); //error
return rez;
}
错误是:此行有多个标记 - 'filter2' 未在此范围内声明 - 函数 'filter2' 无法解析
我在哪里做错了?filter2 函数返回一个 DynamicVector,所以我不明白为什么它不起作用。