1

我的 C++ 程序中有一个编译错误:“ no matching function for call to find(std::_List_iterator<Process>, std::_List_iterator<Process>, Process&)”。

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

“过程”是我的课之一

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 回答