Ich habe 2 Klassen in ssservice.h:C++ Liste Funktion Rückgabeliste
class ssverbindungsdaten
{
public:
ssverbindungsdaten();
~ssverbindungsdaten();
int id;
string test;
};
class softswitch{
public:
softswitch();
~softswitch();
list<ssverbindungsdaten> holeAlleRohdaten();
};
Mein ssservice.ccp:
list<ssverbindungsdaten> softswitch::holeAlleRohdaten(){
//ssverbindungsdaten * ssv = new ssverbindungsdaten;
list<ssverbindungsdaten> *listTmp = new list<ssverbindungsdaten>;
return *listTmp;
}
Und mein main.cpp:
int main(int argc, char *argv[])
{
//TODO: Mulithreading
std::cout << "Starte ...";
softswitch *ss = new softswitch;
list<ssverbindungsdaten> *liSSVVerbinngsdaten = new list<ssverbindungsdaten>();
liSSVVerbinngsdaten = ss->holeAlleRohdaten();
return 0;
}
Aber In main.cpp ist ein Fehler aufgetreten:
cannot convert ‘std::__cxx11::list<ssverbindungsdaten>’
to ‘std::__cxx11::list<ssverbindungsdaten>*’
in assignment
liSSVVerbinngsdaten = ss->holeAlleRohdaten();
Es sollte
sein Die Liste "holeAlleRohdaten" sollte ein lsit sein, das alle Klassen "ssverbindungsdaten" enthält.
Das kann ich später durch die "liSSVVerbinungsdaten" in main.cpp durchlaufen, und bekomme alle Klassen "ssverbindungsdaten" mit den Werten (int id, string test).
Warum kann ich nicht einfach die Liste "liSSVVerbindungsdaten" auf "ss-> holeAlleRohdaten" setzen?
Sie verwenden Zeiger zu viel. Und undicht als Ergebnis. Es ist nicht das Problem, vor dem Sie stehen. Aber es ist ein wichtiger und eng verbunden. – StoryTeller
Kommen Sie von einem Java oder C# Hintergrund? In C++ müssen Sie zum Erstellen von Objekten nicht 'new' verwenden. Z.B. 'list listTmp;' ist genug. –
@Someprogrammerdude Ich dachte in cpp mit dem "neuen" die Objekte werden im RAM gespeichert? Denn die Objektliste enthält später ca. 200 000 Entrys mit ca. 50 Attributen pro Klasse. – Patrick