Этот код должен работать, чтобы очистить ваш стек:
заменить:
names.destroyStack();
с:
while (!names.empty())
{
names.pop();
}
Как видите, empty - это функция; он возвращает значение. В этом случае он возвращает логическое значение (истина / ложь), поэтому вам нужно иметь круглые скобки после него, чтобы вызвать его.
Вот почему вы получаете сообщение о том, что пустое не объявлено; это означает, что компилятор ищет переменную с именем empty, но она не существует. Добавляя парены, вы говорите, что хотите вызывать функцию, а не обращаться к переменной.
«Цикл while» перебирает все элементы в стеке, пока стек не станет пустым. Это фактически означает, что для каждого элемента, который находится в стеке, элемент «pop'd» отключен (pop также является функцией, но он возвращает элемент, который был в стеке). В конце концов, в стеке ничего не осталось, и цикл while завершается, поскольку empty () возвращает true.
Чтобы узнать, какие функции и свойства имеет шаблон стека, проверьте:
http://www.cppreference.com/wiki/container/stack/start