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. 😞
    Mit

    CDataSet* 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?


Anmelden zum Antworten