微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不存在从到*的适当转换

如何解决不存在从到*的适当转换

我正在使用链接列表来操作排序列表。但是,在我的函数PutUser中,调用一个函数比较两个用户时出现错误。我不确定该怎么办或如何处理该错误

这是我的NodeUser结构(为链接列表创建节点):

struct NodeUser { 
    User user;
    NodeUser* nextOnList;
};

然后我有一个函数,该函数应该创建一个新节点并将用户放入列表中

void SortedList::PutUser(User* user) {
    NodeUser* newNode; /
    NodeUser* prevIoUsPointer; 
    NodeUser* location; 
    bool moretoSearch;

    location = topOfList;
    prevIoUsPointer = NULL;
    moretoSearch = (location != NULL);

    while (moretoSearch) {
        switch (user->comparedTo(location->user)) {
        case GREATER:
            prevIoUsPointer = location;
            location = location->next;
            moretoSearch = (location != NULL);
            break;
        case LESS:
            moretoSearch = false;
            break;
        }
    }
    newNode = new NodeUser;
    newNode->user = user;

    if (prevIoUsPointer == NULL) {
        newNode->next = topOfList;
        topOfList = newNode;
    }
    else {
        newNode->next = location;
        prevIoUsPointer->next = newNode;
    }
    length++;
}

我在出现错误(具体位置用红色下划线标出(错误)):

switch (user->comparedTo(location->user))

如何解决交换机上的错误

解决方法

您正在尝试传递User 指针所在的User* 对象

没有理由将指针中的User对象 传递到SortedUserType::PutUser()User::comparedTo()中。通过引用将其传递给

class User {
public:
    ...
    RelationType comparedTo(const User &aUser) const;
    ...
};

void SortedUserType::PutUser(const User &user) {
    ...
    while (moreToSearch) {
        switch (user.comparedTo(location->user)) {
        ...
    }
    ...
    newNode = new NodeUser;
    newNode->user = user;
    ...
}
,

一个快速解决方案是

RelationType comparedTo(User const &aUser) const;

或至少

switch (user->comparedTo(&location->user))

指针不应过度使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。