如何从成员访问受保护/私有嵌套类指针

时间:2017-05-27 14:56:25

标签: c++ pointers

我有一个如下的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;
}

1 个答案:

答案 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变量来保存这些类型。