Variable erfordert Stapelrahmen
-
Ich habe eine bool-Variable, die ich per Set-/Get-Methode auslese/setze. Leider bekomme ich beim Zugriff den Fehler CXX0069:
Variable erfordert Stapelrahmen
Woran kann das liegen?
CDataSet.cpp:
#include "CDataSet.h" CDataSet::CDataSet () { bIsMA = false; } CDataSet::~CDataSet () { } bool CDataSet::GetMANotation(void) { return bIsMA; } void CDataSet::SetMANotation(bool bMA) { bIsMA = bMA; }
CDataSet.h:
class CDataSet { public: CDataSet(); ~CDataSet(); bool GetMANotation(void); void SetMANotation(bool); bool bIsMA; };
MyDialogAppDlg.cpp
#include "CDataSet.h" ... MyDialogAppDlg::TuEtwas() { CDataSet* m_pMyPointer; if (m_pMyPointer->GetMANotation() == true) // ERROR { ... } }
-
Dein Zeiger zeigt ins Nirvana, du hast ihm keinen Speicher zugewiesen.
-
Hey danke, ich seh schon die einfachsten dummen Fehler nicht mehr.
MitCDataSet* m_pMyPointer = new CDataSet;
klappts. THX, deus.
Warum diese KRYPTISCHE Fehlermeldung?
-
zwette schrieb:
Warum diese KRYPTISCHE Fehlermeldung?
Ob die so krypitsch ist kann ich nicht sagen - du hast sie ja nicht gepostet!
Aber ich denke die Ursache ist diese:
Der Pointer ist - wie schon gesagt - nicht zugewiesen. Aber naturlich kannst du trotzdem mit ihm arbeiten. Jetzt zeigt der halt irgendwohin.
Hm - ist schwer zu beschreiben was ich meine.Warum nicht:
bool GetMANotation(void) const;
Und verschieb doch die Intialisierung von bIdMA in die Initialisierungsliste.
CDataSet::CDataSet () : bIsMA(false) {}
-
hehejo schrieb:
Warum nicht:
bool GetMANotation(void) const;
Und verschieb doch die Intialisierung von bIdMA in die Initialisierungsliste.
CDataSet::CDataSet () : bIsMA(false) {}
Nur so aus Neugierde, warum?
Gibt es irgendwelche Vorteile?
Wenn, wäre ich über eine Antwort sehr erfreut.
-
hehejo schrieb:
Ob die so kryptisch ist kann ich nicht sagen - du hast sie ja nicht gepostet!
Doch, siehe oben erstes Post: "CXX0069: Variable erfordert Stapelrahmen!"
Aber was meint der Compiler damit?