Liste, Pointer problem
-
naja, erstes zeigt doch aufn element, also is erstes->a, der wert a von dem element, !?
-
Deklaration:
int *ptr;Initialisierung
ptr = &var;
-
Das in Zeile 25 erzeugte Objekt wird am Ende des Blocks (Zeile 29) automatisch zerstört und freigegeben - jeder Zeiger, der auf dieses Objekt zeigte, ist damit automatisch ungültig.
-
camper schrieb:
Das in Zeile 25 erzeugte Objekt wird am Ende des Blocks (Zeile 29) automatisch zerstört und freigegeben - jeder Zeiger, der auf dieses Objekt zeigte, ist damit automatisch ungültig.
okay, ich verstehe, klar^^.
wie kann ich das umgehn?
-
Erzeuge das Objekt außerhalb des Blocks zB oben mit a
-
okay, habs geschafft, danke, es war wirklich der fehler dass das object c ja nur daseinsberechtigung hat in seinem Block,
hab das problem mal so gelöst. Es leistet das gewünschte.
#include <iostream> using namespace std; class myclass { public: myclass* next; // next element int a; // value myclass(int val) { a = val; } void add(int val) { next = new myclass(val); } }; int main() { myclass *erstes; myclass *letztes; myclass* a = new myclass(0); erstes = a; letztes = a; for(int i=0; i<5; i++) { letztes->add(i); letztes = letztes->next; } for(int i=0; i<5; i++) { printf("%d\n", erstes->a); erstes = erstes->next; } int lo; cin >> lo; return 0; }danke gary für die hilfe

gruß
eurohasi
-
ich würd aber noch im ctor den "next" zeiger auf null setzen, um das ende der liste zu markieren.
da wir die länge der liste meist nicht vorher kennen (sonst würde man ein array verwenden) kann man die null als abbruchbedingung benutzen
while (erstes) { printf("%d\n", erstes->a); erstes = erstes->next; }
-
anstatt
int lo; cin >> lo;kannst du
fflush(stdin); getchar();verwenden
-
gary1195 schrieb:
anstatt
int lo; cin >> lo;kannst du besser
fflush(stdin); getchar();verwenden
LOL
-
@ gary1195:
Wir sind immer noch im C++-Forum. Von daher wäre es vielleicht vorteilhaft, den Threadersteller nicht zusätzlich zu verunsichern...
(Im Übrigen hat auchprintf()hier nichts zu suchen.)@ eurohasi:
Hier gibts einen Artikel über Zeiger. Es lohnt sich sicher, den durchzulesen, Zeiger werden dort sehr gut erläutert.