2010-05-04 8 views
2

Merci à l'aide que j'ai reçu dans ce post:Je vais avoir des problèmes avec l'aide std :: pile pour récupérer les valeurs d'une fonction récursive

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

J'ai une fonction récursive agréable, concis parcourir un arbre dans l'ordre de postfix:

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

Maintenant, j'ai besoin d'évaluer les valeurs et les opérateurs comme ils sont retournés. Mon problème est comment récupérer

eux. J'ai essayé le std :: pile:

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

mais quand j'ai essayé d'y accéder dans le principal()

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

Je suis l'erreur:

« std :: pile < _Ty> :: top ': appel de fonction manquant liste d'arguments; utiliser '& std :: pile < _Ty> :: top' pour créer

un pointeur vers un membre »

Je suis coincé.

Une autre question à suivre sous peu.

Répondre

9

Ils sont membres fonctions:

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

C'est ce que l'erreur signifie quand il dit « liste d'arguments manquants appel de fonction. » La liste des arguments (qui dans ce cas est vide puisque la fonction ne prend aucun paramètre) et les parenthèses sont manquantes.

+0

Damn! aussi simple que cela. Merci pour toutes les réponses. –

1

top et pop sont des fonctions, pas des variables membres. Vous devriez écrire

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

top() est une fonction membre dans std::stack pas une variable membre. Vous avez donc besoin de la parenthèse lors de l'appel top