Problem mit temporärer Klassenvariable
-
Damit wissen die woran Sie sind? Krass. Naja, lesbarkeit ist nicht jedermanns Sache.

OT: ich hab noch nicht mit Klassen angefangen, aber macht das wirklich jmd? Alles zu kennzeichnen ob private double usw usw ???
-
beg__ schrieb:
Damit wissen die woran Sie sind? Krass. Naja, lesbarkeit ist nicht jedermanns Sache.

OT: ich hab noch nicht mit Klassen angefangen, aber macht das wirklich jmd? Alles zu kennzeichnen ob private double usw usw ???
Das bleibt deren Geheimnis, ich würde es auch nicht so machen...

-
beg__ schrieb:
OT: ich hab noch nicht mit Klassen angefangen, aber macht das wirklich jmd? Alles zu kennzeichnen ob private double usw usw ???
Es ist nicht unüblich, Membervariablen in ihrer Schreibweise von lokalen Variablen zu unterscheiden.
Ansonsten ist ungarische Notation in C++ und ähnlichen Sprachen nicht üblich und wird eher kritisch gesehen. Eventuell kann man noch ein Argument für apps hungarian machen, um zum Beispiel zu markieren, ob der Inhalt einer Datenstruktur aus einer vertrauenswürdigen Quelle kommt oder aus Nutzereingaben abgeleitet ist (und man bei der Verarbeitung mit böswilligen Falscheingaben rechnen muss).Das Thema kam im Forum oft dran, siehe zum Beispiel:
http://www.c-plusplus.net/forum/p1773551#1773551
Und viele andere mehr: Google: site:www.c-plusplus.net ungarische notationZurück zum Thema:
Krachi, auch wenn der Stil in meiner ersten Antwort satirischer Natur war, so gilt doch trotzdem die Bemerkung im ersten Absatz: Ohne ein vollständiges Minimalbeispiel wird man dir nicht helfen können.
-
@SeppJ , wie kennzeichnest du deine Membervariablen?
-
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...
