我有一個如下所示的queue.h文件。如何從成員訪問受保護/私有嵌套類指針
我可以從Main中訪問隊列的頭指針嗎?
如果是,我應該怎麼做?
由於頭指針是一個類指針,它的類型是一個受保護的嵌套類,我不認爲我可以從main訪問它。
因此,我嘗試創建一個函數getHead()
作爲公共成員。然而,另一個問題來了,它是我使用模板類。請指導我如何解決這個問題。
我的頭文件:
#include <iostream>
#include <iomanip>
using namespace std;
class PCB
{
public:
int PID;
string fileName;
};
template<class T>
class myQueue
{
protected:
class Node
{
public:
T info;
Node *next;
Node *prev;
};
Node *head;
Node *tail;
int count;
public:
void getHead(Node **tempHead);
};
template<class T>
void myQueue<T>::getHead(Node **tempHead)
{
*tempHead = head;
}
#endif
我主要是:
template<class T>
myQueue<T>::Node* myQueue<T>::getHead()
{
return head;
}
:
#include "myQueue.h"
#include <iostream>
int main()
{
myQueue<PCB> queue;
//How can I access the Head pointer of my Queue here?
//queue.getHead(&tempHead);
return 0;
}
如果您將Node設爲受保護的類,那麼您將無法在類之外獲得Node *。因此,請將班級定義公開,並且可以讓成員(如頭,尾,數)仍然是私人的。然後你可以做Node * getHead(){return head; } – Gerriet
@Gerriet _「如果您將Node設置爲受保護的類,那麼您將無法在類之外獲得Node * _錯誤。看到我的答案。 –
另請注意,「使用namespace std」在頭文件中被認爲是不好的做法:https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice – Gerriet