c++ - 指向函数的指针 C++

标签 c++

伙计们!我正在尝试这样做:

int (*filterFunc)(Medicine* criteria, Medicine*);
DynamicVector<Medicine>* filter2(Medicine* criteria, filterFunc f); //error

但我得到一个错误:'filterFunc' 不是一个类型

我正在尝试这样做,因为我想要一个通用过滤器,这样我就可以这样做:

int filterPrice(Pet* pet) {
    if (pet->price > 10 && pet->price < 100) {
        return 0;
    }
    return 1;
}

VectorDinamic* filter2(Pet* criteria, filterFunc f) {
    VectorDinamic* v = getAll(ctr->repo);
    VectorDinamic* rez = creazaVectorDinamic();
    int nrElems = getNrElemente(v);
    int i;
    for (i = 0; i < nrElems; i++) {
        Pet* pet = get(v, i);
        if (!f(criteria, pet)) {
            add(rez, copyPet(pet));
        }
    }
    return rez;
}

VectorDinamic* filterByPrice(float price) {
    Pet* criteria = createPet(1, "", "", price);
    VectorDinamic* rez = filter2(ctr, criteria, filterByPriceGr);
    destroyPet(criteria);
    return rez;
}

我该如何解决这个问题?

最佳答案

您忘记了 typedef 来声明类型。否则,此声明只会创建一个类型为 int(*)(Medicine*,Medicine*) 的变量。

  typedef int (*filterFunc)(Medicine* criteria, Medicine*);
//^^^^^^^

关于c++ - 指向函数的指针 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15849725/

相关文章:

c++ - 子类化 fstream 并即时解密数据

c++ - 在 MATLAB 中打开包含混合数据的 .gz 文件

c++ - boost create_directories() 在受限的远程服务器上失败

c++ - QTimer::singleShot(0, object SLOT(obj_slot())) 是做什么的?

c++ - CPOI 和 CWaypoint

c++ - 套接字关闭但 session 引用未被正确销毁

c++ - 在堆栈上创建一个指针

c++ - 为什么允许编译器优化这个繁忙的等待循环?

c++ - Visual C++ 中的结构对齐

c++ - 如何从 std::vector<char> 构造 std::string?