Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

1

27.08.2009, 13:46

[gelöst] List Iterator nicht dereferenzierbar

C++; MSVC++2008; WindowsXP SP2

Ich stehe gerade vor einem recht seltsamen Problem:

ich will die Adresse einer Intvariable namens "ID" einer Funktion übergeben. Diese Variable ist aber Teil einer Klasseninstanz, die Wiederum in einer Liste sitzt. ich habe nur den Zeiger auf den Iterator der auf das benötigte Objekt zeigt. Bis hierher verstanden? XD

Der Parameter den ich der Funktion übergebe sieht aus wie folgt

C-/C++-Quelltext

1
&(*pEditPlayers)->ID

(ich habs sogar vor lauter VErzweiflung schon so probiert: ^^)

C-/C++-Quelltext

1
&((*pEditPlayers)->ID)


Der Compiler meckert nicht und es sieht auch ganz logisch aus.

Wenn ich jetzt aber in meinem Programm besagte Funktion mit besagtem Parameter starte kommt die Fehlermeldung "list iterator not dereferencable"
Die ist mir nicht unbekannt und sie kommt normalerweise wenn der Iterator über das Ende der Liste hinausgegangen ist oder noch keiner Liste zugewiesen wurde.
Wenn ich jetzt aber den Debugger drüberlaufen lasse, sehe ich, wenn ich mit der Maus darüberfahre, dass pEditPlayers sehr wohl auf den richtigen Iterator und somit auf das richtige Objekt zeigt.

Vermutlich ist das Problem deppeneinfach zu lösen aber ich komme nicht dahinter.[/cpp]

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

27.08.2009, 13:55

Der Iterator zeigt nicht auf das richtige Element.
Wenn du jetzt mit dem Debugger durch gehst, bist du sicher, dass der Fehler dann kommt, wenn dieses besagte Element anschaust?
Wahrscheinlich nicht, also nehme ich mal an, dass die Liste bis ::end läuft und du da probierst zu dereferenzieren..

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

3

27.08.2009, 13:55

Wie sind denn "pEditPlayers" und ID definiert ?

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

4

27.08.2009, 14:36

Zitat von »"drakon"«

Der Iterator zeigt nicht auf das richtige Element.
Wenn du jetzt mit dem Debugger durch gehst, bist du sicher, dass der Fehler dann kommt, wenn dieses besagte Element anschaust?
Wahrscheinlich nicht, also nehme ich mal an, dass die Liste bis ::end läuft und du da probierst zu dereferenzieren..


Doch genau so war es und das hat mich sehr gewundert.

Aber inzwischen habe ich das Problem gelöst und es war wirklich einfach aber es ist an einer enderen Stelle gelegen ^^

Ich habe dem Zeiger auf den Iterator die Adresse des Rückgabewerts von Liste.begin() zugewiesen was natürlich ein blödsinn ist weil der gleich gelöscht wird. Trotzdem muss die vollständige Instanz auch wenn sie schon gelöscht war noch als Speicherrest im Arbeitsspeicher zurückgeblieben sein, was der Grund ist, wieso der Debugger sie noch gefunden hat. :?

eine recht kuriose Geschichte :lol:

Trotzdem meinen ungeschmälerten Dank für eure Hilfsbereitschaft

Werbeanzeige