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?