[英]How to access a protected/private nested class pointer from a member
我有一個如下的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
我的主要是:
#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;
}
要從類外部訪問myQueue::Node
,您需要稍微重寫getter函數:
template<class T>
myQueue<T>::Node* myQueue<T>::getHead()
{
return head;
}
然后您可以像這樣在main()
使用它
auto head = queue.getHead();
請注意,在這種情況下,使用auto
很重要。 你仍然不能聲明類型的任何變量myQueue<T>::Node
或myQueue<T>::Node**
之外myQueue<T>
但你可以使用auto
變量來保存這些類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.