函数无法解析c ++

时间:2013-04-06 11:07:26

标签: c++ function filter

我试图制作一个更通用的过滤器,所以我用typedef定义了一个指向函数的指针。但是我在DynamicVector * filterByQuantity(int quantity)函数中收到错误。这是我想要做的整个代码:

或者Controller.h

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

错误是: 此行有多个标记      - &#39; filter2&#39;没有在这宣布      范围      - 功能&#39; filter2&#39;不可能      解决

我在哪里做错了? filter2函数返回一个DynamicVector,所以我不明白它为什么不起作用。

1 个答案:

答案 0 :(得分:1)

因为filter2的声明及其实现不同。

看看你是如何在第2行进行原型设计以及如何实现它的。 Filter2应该被声明为Controller范围的一部分,或者作为全局范围的一部分,而不是两者。