在“ if(size == list [i])”处,在“ ==“上用红色标记,它表示No operator "==" matches these operands
operand types are: int == InventoryRecord
。我看不到我在做什么错。有人可以向我解释为什么吗?
void linear_search(InventoryRecord list[], int size) {
int i;
cout << "\nEnter Element to Search : ";
cin >> size;
/* for : Check elements one by one - Linear */
for (i = 0; i < MAX_SIZE; i++) {
/* If for Check element found or not */
if (size == list[i]) {
cout << "\nLinear Search : Element : " << size << " : Found : Position : " << i + 1 << ".\n";
break;
}
}
if (i == MAX_SIZE)
cout << "\nSearch Element : " << size << " : Not Found \n";
}
答案 0 :(得分:0)
list [i]是InventoryRecord类型的项目数组中的第i个项目。它不是InventoryRecord的大小,也不是InventoryRecord中可能包含的对象的大小。如果InventoryRecord是一个类,则它可能具有可返回或包含大小的可访问方法或成员。
size == list[i].size;
或
size == list[i].size();
或者,如果InventoryRecord是一个类,则可以考虑添加==运算符以返回大小。但是,我怀疑这不是您想要的。期望==运算符将比较InventoryRecord中嵌入的内容,而不是内容的大小。
期望是...
3 == list[i];
将测试InventoryRecord中嵌入的项目是否等于3。不是嵌入的项目的大小为3。
答案 1 :(得分:0)
在这种情况下,编译器不知道如何比较这些类型。您可以为InventoryRecord类重载operator ==。
bool operator==(const size_t& size) const {
// Compare
// As example return m_size == size;
}