Problem mit temporärer Klassenvariable
-
Könnte man diese "Tipps" guten Gewissens übernehmen ?
-
Hab das Problem nun nach ausführlichem Debuggen gefunden.

Der Fehler war an einer Stelle die ich überhaupt nicht vermutet hatte.Ich habe eine Funktion anlegen geschrieben, mit der ich den Klassenvariablen per Input Werte zuweise. Allerdings habe ich dabei vergessen, den entsprechenden Konstruktor der Oberklasse aufzurufen, sodass meine geerbten Werte nicht definiert wurden. In der Folge kam es zu einem Speicherzugriff, der die merkwürdigen Werte erzeugt hat.
Mich wundert nur, dass Visual Studio mich nicht gewarnt hat.

void PKW::vAnlegen() { Fahrzeug::Fahrzeug(); // HIER DAS FIX! -> Problem gelöst string sName; double dMaxSpeed, dTankvolumen, dVerbrauch; cout << endl << "********* Neuen PKW anlegen *********" << endl; cout << "Name : "; cin >> sName; cout << endl << "Max. Geschwindigkeit : "; cin >> dMaxSpeed; cout << endl << "Tankvolumen (default: 55L) : "; cin >> dTankvolumen; cout << endl << "Verbrauch (default: 6L) : "; cin >> dVerbrauch; cout << endl << "******* PKW angelegt (ID : " << p_iID << ") *******" << endl; p_sName = sName; p_dMaxGeschwindigkeit = dMaxSpeed; p_dTempGeschwindigkeit = dMaxSpeed; p_dVolumen = dTankvolumen; p_dTankinhalt = p_dVolumen / 2; p_dVerbrauch = dVerbrauch; }
-
Fahrzeug::Fahrzeug(); // HIER DAS FIX! -> Problem gelöstNEIIIHHHHN
Was machst du da? Impelemtiere den Konstruktor von PKW richtig
-
Krachi schrieb:
Fahrzeug::Fahrzeug(); // HIER DAS FIX! -> Problem gelöst
LOL, das löst dir garantiert kein Problem. Du erzeugst damit ein temporäres Objekt vom Typ Fahrzeug. Da bei dir einiges im Argen ist, wird das wohl den Seiteneffekt haben, dass damit dein eigentliches Problem überdeckt wird. Aber weder ist es verschwunden, noch ist es gelöst, im Gegenteil.
-
beg_offl schrieb:
Könnte man diese "Tipps" guten Gewissens übernehmen ?
Nein, alle Begründungen und Erklärungen dort sind sachlich falsch.
-
Das sind die Richtlinien für irgendein Projekt oder eine Abteilung, warum sollte man die übernehmen wollen? Das ist deren interne Angelegenheit, die wahrscheinlich nicht mal für die Öffentlichkeit bestimmt ist.
-
Kennzeichnet Ihr Membervariablen dann mit m_xyz oder gar nicht ?
-
beg_ schrieb:
Kennzeichnet Ihr Membervariablen dann mit m_xyz oder gar nicht ?
beg_sieht man hier und da.m_begauch.
Aber was mir gerade wichtig ist: Ist doch scheißegal!Wenn Du eine Diskussion über Coding Conventions öffnen willst: Forum "Rund um die Programmierung".
Ansonsten lies über verschiedene Coding Conventions.Aber den Thread zu kapern ist unhöflich.
-
Sorry, war nicht meine Absicht. Over and Out
-
Bashar schrieb:
Krachi schrieb:
Fahrzeug::Fahrzeug(); // HIER DAS FIX! -> Problem gelöst
LOL, das löst dir garantiert kein Problem. Du erzeugst damit ein temporäres Objekt vom Typ Fahrzeug. Da bei dir einiges im Argen ist, wird das wohl den Seiteneffekt haben, dass damit dein eigentliches Problem überdeckt wird. Aber weder ist es verschwunden, noch ist es gelöst, im Gegenteil.
Du hast Recht! Ich habe im Verlauf der Programmierung bemerkt, dass weitere Objekte erzeugt wurden, die ich nicht wollte.
Das Problem hat sich aber behoben. Ich habe alle meine Funktionen abgeändert, auf einmal hat es funktioniert, nur finde ich den Fehler nicht mehr, da ich nicht genau weiß, wie ich ihn behoben habe...
