[H] - c++ Zugriffsverletzung sollte leicht zu lösen sein



  • Habe gerade eine Klasse in einer header-datei geschrieben, die einige private variablen hat, und eine PUBLIC int-funktion die die Variablen zurückgibt. Rufe ich die Funktion in meiner main auf, Bekomme ich eine Zugriffsverletzung beim Lesen... Warum???
    Hier der Quellcode:

    Header:
    Code:

    /*
        cMainFlugzeug.h
        Class Flugzeug
        Generiert das Hauptflugzeug. 
    */
    
    class cMainFlugzeug
    {
    
    private:
        int m;                            //Flugzeugmasse in Kg
        int FG;                            //Gewichtskraft des ACs in Newton
    
        int x,y,z;                        //Fluegzeug im 3d-Koordinatensystem
    
        double Vsink;                    
        double Vsteig;
        double Vflug;
        double Vgrund;
    
        double CA;                        //Auftriebsbeiwert des Acs (VARIABEL)!
        double CW;                        //Widerstandsbeiwert des ACs (Leicht Variabel)!
        int Fw;                            //Widerstandskraft des ACs in Newton
        int Fa;                            //Auftriebkraft des ACs in Newton
    
        int Hoehe;                        //Höhe über Meeresspiegel
    
    public:
        void setPosition(int ix, int iy, int iz)
        {
            this->x = ix;
            this->y = iy;
            this->z = iz;
        }
    
        int getPosition(char wichCood)
        {
            switch(wichCood)
            {
                case 'x':
                    return x;
                    break;
    
                case 'y':
                    return y;
                    break;
    
                case 'z':
                    return z;
                    break;
            }
        }
    
    };
    

    Aufruf in der main:
    Code:

    cMainFlugzeug AIRPLANE;
        AIRPLANE.setPosition(4, 4, 4);
        MessageBoxA(NULL, LPCSTR(AIRPLANE.getPosition('x')), "Test", MB_OK);
    

    Hmmmm...
    Bin mal gespannt auf die Lösung bestimmt iwas dummes 🙂



  • Was soll das werden?
    MessageBoxA(NULL, LPCSTR(AIRPLANE.getPosition('x')), "Test", MB_OK);
    Die Funktion MessageBox will einen String, Deine getPosition - Methode gibt aber einen int zurück.



  • Ok die Umwandlung durch LPCSTR()? Klappt so nicht? 😕

    Aber kann das einen Fehler bzg. Zugriffsverletzung auslösen? Müsste ich da nicht eher Probleme mit der Typumwandlung bekommen?



  • Luapin schrieb:

    Aber kann das einen Fehler bzg. Zugriffsverletzung auslösen? Müsste ich da nicht eher Probleme mit der Typumwandlung bekommen?

    Ja. Nein.



  • OK. Wie kann ich den int dann in einen LPCSTR umwandeln?



  • Das ist einfach ein C-String. Du könntest also einfach über einen (C++)-Stringstream konvertieren ...
    C-Varianten wären zB sprintf oder itoa zu benutzen.



  • Ja klar mit sprintf hat es dann geklappt. Hatte mich da mit der Zugriffsverletzung so ein bisschen festgefahren richtung fehlende Berechtigung auf Variablenzugriff.

    Mein erster Thread hier im Forum. Hat toll geklappt danke 🙂



  • Gemeinsam sind wir stark ...


Anmelden zum Antworten