0

以前にこれに遭遇し、修正を見つけた人はいますか? または私は何か間違ったことをしていますか?外部クラスのインテリセンスでヘッド ノードまたはテール ノードにアクセスしようとすると、メンバーがないと表示されます。

編集:MS VS 2010、および2012で試しました

#pragma once

#include <string>
using namespace std;

template <typename ItemType>
class LinkedArrayList
{
public:
    /*************************************
            Inner Class
    *************************************/
    class Node 
    {
    public:
        Node(void){};
        Node(Node* pNode, Node* nNode, int limit)
        {
            prevNode = pNode;
            nextNode = nNode;
            capacity = limit;
            size = 0;

            if(capacity != 0)
                items = new ItemType[capacity];
        };
        ~Node(void)
        { 
            delete(items);
        };
        Node* nextNode;
        Node* prevNode;
        ItemType* items;
        int size;
        int capacity;
    private:
    };

    /*************************************
            Declarations
    *************************************/
    int numOfNodes;
    int arrayCapacity;
    Node* head;
    Node* tail;

    /*************************************
            Functions
    *************************************/

    LinkedArrayList(void)
    {
    };
    LinkedArrayList(int capacity)
    {
        head = new Node(NULL, NULL, 0);
        tail = new Node(NULL, NULL, 0);
        arrayCapacity = capacity;
        numOfNodes = 0;
    };

    ~LinkedArrayList(void)
    {
    };

入力しようとすると、head->またはtail->左下隅のヒントに intellisense no members available と表示されます

4

1 に答える 1

0

aのメンバーはclassデフォルトでプライベートです。それらをアクセス可能にするには、keywordを使用しますpublic

class X
{
public:
    X() {}
    ~X() {}
    // rest of the public stuff
private:
    // private stuff
};

内部クラスは外部クラスのプライベートメンバーに完全にアクセスできますが、その逆はありません。

インテリセンスの内容にあまり注意を払わないでください。多くの場合役に立ちますが、間違っている場合もあります。コンパイラーはマイクロソフトの優れたプログラマーによって書かれているので、あなたが書いたものがコンパイルされるかどうか試してみてください。

于 2013-03-16T23:39:29.867 に答える