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

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

1

08.04.2010, 13:10

Problem mit Variable vom Typ bool

Ich hab ein Problem mit dem Datentyp bool. Das hört sich vielleicht komisch an, aber mir ist das ganze echt ein Rätsel.
Also. Ich hab eine Klasse CLogic. Diese Klasse besitzt eine Membervariable: bool m_bFirst.
Weiters hab ich eine Memberfunktion Reset(). Dort setz ich m_bFirst auf true; Reset wird im Konstruktor von CLogic aufgerufen.
Jetzt das Problem: die Variable hat irgendwann später den Wert 20! Wenn ich mir den Wert in der Reset-Funktion ausgeben lasse, hat sie den Wert 1. Ist ja eigentlich korrekt. Wenn diese Funktion aber verlassen wird und ich wieder zum Konstruktor zurückkehre, und mir direkt unter dem Aufruf von Reset die Variable ausgeben lasse, hat sie den Wert 20.

Woran kann das liegen?

Wenn ihr Code braucht, dann poste ich diesen noch...

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

08.04.2010, 13:15

hmm... ich hab zwar keine ahnung wie das passieren könnte aber ist doch egal. true bleibt true.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

3

08.04.2010, 13:16

Der Ausdruck if(m_bFirst == true) ist aber nicht wahr...
Zumindest geht er in diesen if-Zweig nicht rein.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

08.04.2010, 13:18

if(m_bFirst) bzw. if(!m_bFirst) für ungleich reicht.

trotzdem solltest du im quelltext nach einer stelle suchen an der m_bFirst geändert oder ein zeiger auf m_bFirst übergeben wird.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

5

08.04.2010, 13:21

Jep, so gehts...

Ich hab im ganzen Quelltext nach allen m_bFirst's gesucht. Und nirgends wird das nochmal verändert! Wenn du willst, lad ich das Projekt mal hoch, brauchst ja nur kurz die Suchen-Funktion anwenden.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

08.04.2010, 13:29

nene ich glaub dir schon, dass du die sufu benutzen kannst^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

TSS

Frischling

  • Private Nachricht senden

7

08.04.2010, 13:56

Vielleicht kannst du ja trotzdem mal ein bisschen vom Code posten, möglicherweise hat sich da irgendwo ein Fehler eingeschlichen.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

08.04.2010, 14:08

Der Ausdruck if(m_bFirst == true) ist aber nicht wahr...
Zumindest geht er in diesen if-Zweig nicht rein.

Das glaube ich erst, wenn ich es sehe.

Wenn die Variable korrekt Initialisiert wurde muss das korrekt funktionieren.

Und wenn den bool konvertierst muss laut Standard 1 oder 0 rauskommen.

Zitat von »"ISO/IEC 14882 4.5/4"«

An rvalue of type bool can be converted to an rvalue of type int, with false becoming zero and true
becoming one.


Kannst du das Verhalten in einem kleinen Beispiel erzeugen?

Käsekönig

1x Contest-Sieger

  • »Käsekönig« ist der Autor dieses Themas
  • Private Nachricht senden

9

08.04.2010, 14:12

Ich habs selbst nicht geglaubt. :(

Nein, leider nicht. Irgendwo MUSS einfach ein Fehler sein, ich glaub auch nicht, dass das von alleine so ist. Aber ich hab keine Ahnung, wo.
Werd nachher mal bisschen Code posten, muss jetzt weg...

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

10

08.04.2010, 15:07

Memory Corruption vllt?
<< an dieser Stelle ist eine Signatur verstorben >>

Werbeanzeige