编辑链表中的数据错误:不匹配operator ==

时间:2014-01-11 05:06:23

标签: c++ compiler-errors linked-list

我正在尝试实施房间预订系统。我正在处理的代码是编辑房间类型细节的功能。它将要求用户输入房间ID并将其传递给edit_room()功能以编辑房间类型详细信息。

这是我的struct

struct Node{
    ListItemType roomType;
    ListItemType id;

    Node *next;
    Node *prev;
};

Node *head;
Node *tail;

这是编辑房间类型的功能:

void edit_room(int edit)
{
    ListItemType roomType, roomType1, roomType2;

    if(!isEmpty())
    {
        bool found = false;

        Node* curr = new Node;
        curr = head;

        while(curr != tail->next)
        {
            if(edit == curr->id)
            {
                found = true;
                break;
            }
            curr = curr->next;
        }
        if(found)
        {
            cout << "Enter New Room Type Name: " << endl;
            cout << " ";
            cin >> roomtype1;
            getline(cin,roomtype2);
            roomtype = roomtype1 + roomtype2;

            curr->roomType = roomtype;
            cout << endl << "Successfully updated." << endl << endl;
            system("pause");
        }
        else
            cout << "Could not update information. " << endl << endl;
    }
}

当我尝试编译它时,我收到了一个错误:

  

'error: no match for 'operator==' in 'edit == curr->List::Node::id'.

这个错误意味着什么,我应该如何解决?

2 个答案:

答案 0 :(得分:0)

此错误表示编译器未找到operator = ==将int类型的对象与ListItemType类型的对象进行比较。只是编译器不知道如何比较它们。您没有向我们展示如何定义ListItemType类型,

答案 1 :(得分:0)

您的ListItemType实施是回答此问题的关键。

如果typedef不仅仅是int,那么您需要实施operator ==()来比较intListItemType。看起来有点像这样:

bool operator ==(int lhs, ListItemType const& rhs)
{
    return lhs == std::stoi(rhs);
}

也许您最好将void edit_room(int edit)的签名调整为:

void edit_room(ListItemType& item)

您最好只使用std::list<ListItemType>而不是实现自己的链接列表(这是一个已解决的问题)!

注意

请注意roomType中的大小写。稍后您将在函数中roomtype,这将无法编译。