Rückgabe von Listen



  • Guten Morgen,

    Momentan bin ich mit einem Projekt mit mehreren verketteten Listen beschäftigt. Ich verwende hierfür QLinkedList<T*>. Ich habe innerhalb einer Klasse "Zahlen" eine Get-Methode geschrieben, die mir eine private Liste zurückgeben soll.

    QLinkedList<int*>* Zahlen::GetList() 
    { 
    return &zahlenlist; 
    }
    

    Meine Frage ist nun, wie ich die Liste richtig (Speicher schonend) zurückgeben soll, ohne immer eine Kopie dieser Liste zu erstellen.
    Ist die obrige Methode richtig, oder ist folgendes besser:

    QLinkedList<int*> Zahlen::GetList() 
    { 
    return zahlenlist; 
    }
    

    Kann mir jemand den Unterschied erklären?
    Ich bedanke mich im Voraus.



  • Ich würde die Methode "FilList" nennen und wie folgt deklarieren:

    void Zahlen::FillList(QLinkedList<int*> &list)
    


  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ (auch C++0x und C++11) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Danke für die Antwort.
    Erzeuge ich hierbei aber nicht eine Kopie des Objekts? Ich möchte keine Kopie erzeugen, sondern nur einen Pointer auf diese Liste zurück erhalten.



  • HannesKannNix schrieb:

    Guten Morgen,

    Momentan bin ich mit einem Projekt mit mehreren verketteten Listen beschäftigt. Ich verwende hierfür QLinkedList<T*>. Ich habe innerhalb einer Klasse "Zahlen" eine Get-Methode geschrieben, die mir eine private Liste zurückgeben soll.

    QLinkedList<int*>* Zahlen::GetList() 
    { 
    return &zahlenlist; 
    }
    

    Meine Frage ist nun, wie ich die Liste richtig (Speicher schonend) zurückgeben soll, ohne immer eine Kopie dieser Liste zu erstellen.
    Ist die obrige Methode richtig, oder ist folgendes besser:

    QLinkedList<int*> Zahlen::GetList() 
    { 
    return zahlenlist; 
    }
    

    Kann mir jemand den Unterschied erklären?
    Ich bedanke mich im Voraus.

    Die obige Version liefert einen Pointer zurück, die untere eine Kopie



  • Ich würde eine const-Referenz zurückgeben. Was willst du denn außerhalb mit der Liste machen?


Log in to reply