我正在構建自己的LinkedList,因為我需要一個Node包含更多資料的特殊檔案。我指定我的Node班級是班級的朋友LinkedList,但似乎不允許我Node從LinkedList班級訪問班級中的私有變數。
節點.h
class Node {
private:
Node* next;
...
};
鏈表.h
#include "Node.h"
class LinkedList {
friend class Node;
...
};
鏈表.cpp
...
void LinkedList::insertFirst(Node* n) {
Node* temp = this->root;
this->root = n;
this->root->next = temp; // 1
}
...
1這是我得到錯誤的地方。它說this->root->next是不可訪問的,但我將它作為我的朋友類LinkedList,因此私有變數應該可以訪問。
Stack Overflow 上有很多問題與我的問題類似,但似乎都不是我需要的。
- 一個答案是說要從
privateto切換protected,但這不起作用,它只是將錯誤更改為無法訪問受保護的成員。 - 另一個答案是說他們在朋友宣告中有拼寫錯誤。我檢查了我的,它拼寫正確。
- 另一個人說要確保以正確的順序宣告類,但是因為我將它們放在不同
#include的檔案中,并且我創建宣告為朋友的類的檔案。
我看了很多,但都與上面提到的相似,并沒有幫助我解決我的問題。
我錯過了什么/不理解什么?我嘗試過的任何方法都沒有奏效,我非常感謝任何幫助。
uj5u.com熱心網友回復:
宣告將指定類的friend訪問權限授予宣告類的私有成員(即,“那里的那個類 X 是我的一個朋友,他有權使用我的私有東西”)。
因此,通過宣告Node為的friend內部LinkedList,您授予Node對LinkedList的私有成員的訪問權限,而不是像您想要的那樣相反。
要讓LinkedListaccess Node::next,您需要宣告LinkedList為 a friendof Node:
class Node {
friend class LinkedList;
...
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/416010.html
標籤:
下一篇:禁用非默認選中專案的復選框
