Кто-нибудь сталкивался с этим раньше и нашел исправление? или я что то не так делаю? Если я пытаюсь получить доступ к головным или хвостовым узлам во внешнем классе, intellisense говорит, что у них нет членов. Извините, если это немного беспорядок, я уже некоторое время устраняю неполадки.

Изменить: я пробовал с 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 недоступен

0
WIllJBD 17 Мар 2013 в 03:19

1 ответ

Лучший ответ

Члены class по умолчанию закрыты. Чтобы сделать их доступными, используйте ключевое слово public.

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

Внутренний класс имеет полный доступ к закрытым членам внешнего класса, а не наоборот.

Не обращайте слишком много внимания на то, что говорит intellisense; это часто бывает полезно, но иногда ошибочно. Компилятор написан лучшими программистами Microsoft, поэтому попробуйте, если то, что вы написали, компилируется.

0
Öö Tiib 17 Мар 2013 в 04:15
Я внес изменения, однако, когда я набираю "head->" в конструкторе LinkedArrayList, он по-прежнему говорит, что Node / head не имеет членов.
 – 
WIllJBD
17 Мар 2013 в 03:47
Не уверен, что ты сделал. удалите все public без двоеточия и this->, а затем отредактируйте свое сообщение, чтобы я мог видеть, что у вас есть.
 – 
Öö Tiib
17 Мар 2013 в 03:52
Это отсутствует }; в конце, иначе кажется, что теперь он компилируется.
 – 
Öö Tiib
17 Мар 2013 в 04:07