внешний класс не может видеть внутренний класс при использовании typename?

Кто-нибудь сталкивался с этим раньше и нашел исправление? или я что-то не так делаю? Если я пытаюсь получить доступ к головному или хвостовому узлам во внешнем классе, 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

Решение

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

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]