1

no matching function for call to find(std::_List_iterator<Process>, std::_List_iterator<Process>, Process&)C++ プログラムで" " というコンパイル エラーが発生しました。

mfqueueクラスは次のようになります。

MFQueue::MFQueue() {
        list<Process> queue;
        vector<int> ran;
        int time_quantum = 0;
        int run_for = 0;
}

MFQueue::MFQueue(int quantum) {
        list<Process> queue;
        vector<int> ran;
        int time_quantum = quantum;
        int run_for = 0;
}

「プロセス」は私のクラスの 1 つです

bool MFQueue::contains(Process p) {
        list<Process>::iterator itr = find(queue.begin(), queue.end(), p);
        return (p == *itr);;
}

この問題を解決する方法を知っている人はいますか?前もって感謝します!

4

3 に答える 3

4

#include <algorithm>CPP ファイルに追加します。

于 2012-11-14T03:09:38.753 に答える
1

operator==アルゴリズムのオーバーロードが必要std::findです。Process の ID を比較するとします。

 bool operator==(const Process &lhs, const Process& rhs)
 {
   return lhs.id== rhs.id;
 }

今、あなたはそれを働かせることができます

#include <algorithm>
std::list<Process>::iterator itr = std::find(queue.begin(), queue.end(), p);
于 2012-11-14T03:14:13.843 に答える
0

list<Process> queue;コンストラクターでそれらを使用しないと宣言しているのはなぜですか?

于 2012-11-14T03:12:28.647 に答える