У меня возникли проблемы с использованием std :: stack для получения значений из рекурсивной функции - PullRequest
2 голосов
/ 04 мая 2010

Благодаря помощи, которую я получил в этом посте:

Как использовать «this» в функции-члене?

У меня есть хорошая, краткая рекурсивная функция для обхода дерева в постфиксном порядке:

void Node::postfix()
{
        if (left != __nullptr) { left->postfix(); } 
        if (right != __nullptr) { right->postfix(); } 
                cout<<cargo<<"\n"; 
        return;
};

Теперь мне нужно оценить значения и операторы, когда они возвращаются. Моя проблема в том, как получить

их. Я попробовал std :: stack:

#include <stack> 
stack <char*> s;
void Node::postfix()
{
        if (left != __nullptr) { left->postfix(); } 
        if (right != __nullptr) { right->postfix(); } 
        s.push(cargo);
        return;
};

но когда я попытался получить к нему доступ в main ()

while (!s.empty())
{
    cout<<s.top<<"\n";
    s.pop;
}

Я получил ошибку:

'std :: stack <_Ty> :: top': список вызовов функций отсутствует; используйте '& std :: stack <_Ty> :: top' для создания

указатель на член '

Я застрял.

Еще один вопрос, который вскоре последует.

Ответы [ 3 ]

9 голосов
/ 04 мая 2010

Они являются членами функции :

s.top()
s.pop()
     ^ need parentheses to call a function

Вот что означает ошибка, когда говорится «список отсутствующих аргументов при вызове функции». Список аргументов (который в данном случае пуст, поскольку функция не принимает параметров) и скобки отсутствуют.

1 голос
/ 04 мая 2010

top() является функцией-членом в std::stack, а не переменной-членом. Таким образом, вам нужно скобки при вызове top

1 голос
/ 04 мая 2010

top и pop - это функции, а не переменные-члены. Вы должны написать

s.top();
s.pop();
...