簡體   English   中英

不存在從到 * 的合適轉換存在

[英]No suitable conversion exists from to * exists

我正在使用鏈表來操作排序列表。 但是,在我的函數 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))

不應過度使用指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM