次の定義とプロトタイプ (クラスのメンバー関数) を使用して、基本的に関数ポインターを使用して、異なるタイプの戦略をdivideQuery メソッドに渡します。
typedef vector<ConstraintManager> (*strategyType1)(const Query&);
typedef vector<ConstraintManager> (*strategyType2)(const Query&, int);
vector<ConstraintManager> divideQuery (strategyType1 s, const Query& query);
vector<ConstraintManager> divideQuery (strategyType2 s, const Query& query, int parts);
vector<ConstraintManager> divideByHalf(const Query& query);
vector<ConstraintManager> divideRandom(const Query& query);
vector<ConstraintManager> divideByN(const Query& query, int n);
ただし、呼び出しようとすると(query
パラメーターはラッピング関数から渡されます):
vector<ConstraintManager> result = divideQuery(divideRandom, query);
次のエラー メッセージで失敗します。
DividingSolver.cpp:200:70: error: no matching function for call to ‘DividingSolver::divideQuery(<unresolved overloaded function type>, const klee::Query&)’
DividingSolver.cpp:82:27: note: candidates are: std::vector<klee::ConstraintManager> DividingSolver::divideQuery(std::vector<klee::ConstraintManager> (*)(const klee::Query&), const klee::Query&)
DividingSolver.cpp:87:27: note: std::vector<klee::ConstraintManager> DividingSolver::divideQuery(std::vector<klee::ConstraintManager> (*)(const klee::Query&, int), const klee::Query&, int)
Web から読む限り、過負荷エラー (または他の何か) のように見えますが、いずれにせよ、正確に何が間違っているのかよくわかりません。ヒント/説明をいただければ幸いです。
乾杯