我有一个如下的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;
}
答案 0 :(得分:2)
要从课外访问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
变量来保存这些类型。