Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I'm having trouble with using std::stack to retrieve the values from a recursive function

Thanks to the help I received in this post:

How do I use "this" in a member function?

I have a nice, concise recursive function to traverse a tree in postfix order:

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

Now I need to evaluate the values and operators as they are returned. My problem is how to retrieve

them. I tried the std::stack:

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

but when I tried to access it in main()

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

I got the error:

'std::stack<_Ty>::top': function call missing argument list; use '&std::stack<_Ty>::top' to create

a pointer to member'

I'm stuck.

Another question to follow shortly.

like image 612
Peter Stewart Avatar asked Mar 22 '26 14:03

Peter Stewart


2 Answers

They are member functions:

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

That's what the error means when it says "function call missing argument list." The argument list (which in this case is empty since the function takes no parameters) and the parentheses are missing.

like image 176
James McNellis Avatar answered Mar 25 '26 03:03

James McNellis


top and pop are functions, not member variables. You should write

s.top();
s.pop();
like image 22
Niki Yoshiuchi Avatar answered Mar 25 '26 03:03

Niki Yoshiuchi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!