3

彼ら!私はこれをやろうとしています:

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

どうすればこの問題を解決できますか?

4

1 に答える 1

9

typedefタイプを宣言するために , を忘れました。それ以外の場合、この宣言は type の変数を作成するだけint(*)(Medicine*,Medicine*)です。

  typedef int (*filterFunc)(Medicine* criteria, Medicine*);
//^^^^^^^
于 2013-04-06T10:27:46.737 に答える