没有运算符“ ==”与这些操作数匹配。操作数类型为:int == type_name`

时间:2018-07-20 07:46:54

标签: c++ function struct linear-search

在“ 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";
}

2 个答案:

答案 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;
}