Я пишу функция-член s для класса Stack
. У меня есть связанный список (LL
) вложенного класса в качестве члена класса Stack
. В конструкторе Stack
я создаю новый связанный список, который вызывает конструктор LL
. Используя функции-члены LL
, я генерирую новый узел и указываю его на стек 1 st . Это разрешает нормально.
Однако, когда я кодирую функцию-член Stack
, затмение больше не разрешает экземпляр LL
, сгенерированный в конструкторе Stack
, ни функцию-член LL
, которую я пытаюсь выполнить. вызов.
Я попытался переключить вложенный класс между private
и public
обозначениями элементов. Я также попытался соединить вложенный класс (LL
) с классом включения / родительским классом (Stack
), сделав включающий класс членом вложенного класса, как в предыдущем вопросе / ответе:
Функция-член Nested Class не может получить доступ к функции включающего класса. Почему?
Ни один из них не имел эффекта
No problems here:
class Stack
{
private:
int height, top_element;
class LL
{
push_front(string* new_address)
{
// ... definition
}
//... more nested-class members
};
public:
Stack(); // constructor
void push(string); // enclosing class member
};
Stack
конструктор тоже подойдет:
Stack::Stack(int size)
{
height = size;
top_element = 0;
string stack[height];
LL stack_map;
stack_map.push_front(stack);
}
Когда я попадаю сюда, я сталкиваюсь с моимпроблема:
void Stack::push(string data)
{
if (top_element == height - 1)
{
string stack[height];
stack_map.push_front(stack); // <- PROBLEM
}
}
Надеюсь, я не включил слишком много кода. Второй блок - это демонстрация того, что конструктор инстанцировал LL
и вызвал push_front()
без проблем, в то время как следующее определение жаловалось на ту же функцию и не смог распознать инстанцированные LL
, stack_map
stack_map
и push_front
подчеркнуты красным
Symbol 'stack_map' could not be resolved
и
Method 'push_front' could not be resolved