簡體   English   中英

如何從成員訪問受保護的/私有的嵌套類指針

[英]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>::NodemyQueue<T>::Node**之外myQueue<T>但你可以使用auto變量來保存這些類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM