[英]function could not be resolved c++
我试图做一个更通用的过滤器,所以我用typedef定义了一个指向函数的指针。 但我在DynamicVector * filterByQuantity(int数量)函数中收到错误。 这是我想要做的全部代码:
控制器
typedef int (*filterFunc)(Medicine* criteria, Medicine*);
DynamicVector<Medicine>* filter2(Medicine* criteria, filterFunc f);
controller.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,所以我不明白为什么它不起作用。
因为filter2的声明及其实现不同。
查看您如何在第2行上进行原型设计以及如何实现它。 Filter2
应该声明为Controller
范围的一部分或全局范围的一部分,而不是两者都声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.