stack als Funktionsargumente übergeben...???



  • Hi.
    Mich würde mal interessieren ob es möglich ist
    ein Stack als Funktionsargument zu übergeben.

    Ich gehe doch erstmal einfach davon aus dass ja.

    Aber mein Compiler meckert rum und ich bin mir ziemlich unsicher ob es überhaupt geht.

    Beispielcode:

    void my_function(stack stack_1, stack stack_2);
    
    void My_class::my_function(stack stack_1, stack stack_2)
    {
    
    }
    

    Geht das so einfach? Oder, bzw. warum geht es nicht?
    Grüsse,
    Freak.



  • ich bin mir nicht sicher ob man einen Stack 'per value' uebergeben kann, probier mal

    stack &stack_1
    //oder
    stack *stack_1
    

    Also eine Uebergabe 'per reference'.
    Edit: Das muesste dann gehen, ein Stack ist ja nichts anderes als ein Objekt, muesste also uebergeben werden koennen wie jede andere Klasse.



  • Ganz schlau werde ich nicht. stack ist doch ein template, da musst du zumindest mal sowas wie stack<int> verwenden. Außerdem liegt's im namespace std, daran musst du also auch denken, wenn der Compiler meckert, dass er's nicht findet.

    Richtig, wahrscheinlich willst du ihn eh by reference oder by const reference übergeben. Es geht aber trotzdem auch per value.



  • #include <stack>
    using std::stack;
    
    typedef stack<int> Zahlenstapel;
    
    void grmpf(const Zahlenstapel & stapel) {
     ...
    }
    
    int main() {
      Zahlenstapel keller;
      keller.push_back(2);
      grmpf(keller);
      return 0;
    }
    


  • und wenn du nicht festlegen willst was fürn stack das ist:

    #include <stack>
    using std::stack;
    
    template<class T>
    void grmpf(const stack<T>& stapel) {
     ...
    }
    
    //danke hehejo für den besonders gelungene Funktionsnamen
    


  • Danke euch allen!
    Sehen ja teilweise recht wild aus die Lösungen :).

    Bedeutet wohl dass ich noch ein wenig Theorie pauken muss.
    Vielen Dank!


Anmelden zum Antworten