繁体   English   中英

函数无法解析C ++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM