Кто-нибудь сталкивался с этим раньше и нашел исправление? или я что-то не так делаю? Если я пытаюсь получить доступ к головному или хвостовому узлам во внешнем классе, 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 нет членов доступны
Члены class
являются частными по умолчанию. Чтобы сделать их доступными, используйте ключевое слово public
,
class X
{
public:
X() {}
~X() {}
// rest of the public stuff
private:
// private stuff
};
Внутренний класс имеет полный доступ к закрытым членам внешнего класса, а не наоборот.
Не обращайте слишком много внимания на то, что говорит intellisense; это часто полезно, но иногда неправильно. Компилятор написан лучшими программистами Microsoft, так что попробуйте, если то, что вы написали, компилируется.
Других решений пока нет …