c++ - 函数无法解析 c++

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

错误是: 此行有多个标记 - 在此未声明“filter2” 范围 - 函数“filter2”不能 已解决

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

最佳答案

因为 filter2 的声明和它的实现不同。

在第 2 行查看您如何制作原型(prototype)以及如何实现它。 Filter2 应该声明为 Controller 范围的一部分或全局范围的一部分,而不是两者。

关于c++ - 函数无法解析 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15850128/

相关文章:

c++ - 如何从输入文件中获取字符 '\n'?

c++ - 我输出中的 D3D11 INFO 行是什么意思?

java - 什么是方法内联?

python - 在 Django 中使用 Q() 动态构建复杂查询

javascript - 如何使用可变参数过滤javascript对象数组

c++ - 通过重载进行部分模板特化

c++ - crt1.o函数_start中未定义对 'main'错误的引用

JavaScript 按钮/输入/函数,字符串反转

c++ - 在嵌套类中调用 `operator[]` 后保留类类型

extjs - 在 extjs4.1 的服务器端过滤存储