Merkwürdige Fehlermeldung beim BCB



  • Hey @all,

    und zwar habe ich mir zu einem Projekt selbst eine Klasse dazu geschrieben.
    Jedoch jedesmal wenn ich die Methode von meiner Klasse aufrufe, schreibt er das eine Zugriffsverletzung aufgetreten ist, und öffnet mir die Vector-Header oder die List-Header

    Hier mal kur die Klasse:

    #ifndef CLASSA_HPP
    #define CLASSA_HPP
    
    #include <string>
    #include <vector>
    //#include <list>
    
    ClassA {
      private:
        struct Data {
           std::string Var;
           unsigned int Val;
        };
        typedef std::vector<Data> vData;
        //typedef std::list<Data> vData;
        vData d;
        vData::itertator dIter;
    
      public:
        unsigned int getSize() {
          return d.size();
        }
    };
    
    #endif
    

    Wenn ich das ausführe, dann öffnet er mir die vector/list Header und markiert mir folgende Zeile

    size_type size() const        { return size_type(this->_M_finish - this->_M_start); }
    

    Was mache ich bloß falsch? Sollte doch eigentlich stimmen

    Lg _freeze_



  • Achja nochwas,

    und zwar tritt das Problem auch auf, wenn ich statt

    typedef std::vector<Data> vData;
    

    folgendes schreibe

    typedef std::vector<int> vData;
    

    Lg _freeze_



  • Hast du eine echte Instanz von ClassA, oder vielleicht nur einen uninitialisierten Zeiger?



  • Du kannst aus einer konstanten Funktion nicht this verwenden, weil konst ja eben bedeutet, dass es nicht vom Element/Instanz abhängig ist.
    Wenn du also this verwenden willst, darfst du die Funktion nicht konstant machen.



  • Ja danke, das war eines meiner Probleme, das andere Problem war das ich meinen Formularnamen geändert habe, und der BCB in nur teilweise in den Dateien geändert hat. komischer weise hatte ich dann soetwas:

    // Header
    extern TForm1 *Form1;
    extern TForm1 *frmMain;
    
    // Source
    TForm1 *Form1;
    TForm1 *frmMain;
    

    Ich habe zwar keine Ahnung wie das zusatende kommt, aber vielen Dank nochmals

    Lg _freeze_



  • The Amarin schrieb:

    Du kannst aus einer konstanten Funktion nicht this verwenden, weil konst ja eben bedeutet, dass es nicht vom Element/Instanz abhängig ist.
    Wenn du also this verwenden willst, darfst du die Funktion nicht konstant machen.

    Verwechselst du da const mit static?



  • Ich glaube auch das er es mit static verwechselt, den dort schreibt man sich normalerweise(z.b ich :)) eigene Methoden (statische Methoden), die auf die Variablen oder sonstiges zugreifen.

    Lg _freeze_



  • MFK schrieb:

    Verwechselst du da const mit static?

    Schätze ich auch. Konstante Elementfunktionen verhindern, daß der Zustand der jeweiligen Instanz geändert wird. Das heißt aber nicht, daß man this in der Methode nicht verwenden darf.


Anmelden zum Antworten