より一般的なフィルターを作成しようとしているので、関数へのポインターを typedef で定義しました。しかし、DynamicVector* filterByQuantity(int quantity) 関数でエラーが発生します。これは私がやろうとしていることのコード全体です:
controller.h
typedef int (*filterFunc)(Medicine* criteria, Medicine*);
DynamicVector<Medicine>* filter2(Medicine* criteria, filterFunc f);
コントローラー.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 を返すので、なぜ機能しないのかわかりません。