[英]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.