我的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);;
}
有谁知道如何解决这个问题?提前谢谢!
答案 0 :(得分:4)
将#include <algorithm>
添加到您的CPP文件中。
答案 1 :(得分: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);
答案 2 :(得分:0)
为什么在构造函数中声明list<Process> queue;
不使用它们?