Zugriffsfehler auf Klassenvariable



  • Hi,

    hab ein Problem in meinen Klassen, so scheint es, weil ich beim Zugriff auf einen Klassenmember einen Fehler bekomme, dass dieser nicht mehr richtig initialisiert ist. Der Destruktor dieser Klasse wurde allerdings nicht aufgerufen. Beim Construktoraufruf hab ich Zugriff auf diese Variable.

    Bei der Variable handelt es sich um ein CStringArray (aus der MFC), ich glaub aber, dass der Fehler irgendwo im C++ Klassenbereich legen muss.

    Der genaue Fehler lautet: "cstringarray fails with illegal vtable pointer"

    Von der Serial-Klasse existiert eine globale Variable. Über diese wird zu Beginn die Init() Funktion von der Klasse Serial aufgerufen.

    //c++ file + header file with global varialbe 
    
    class Serial
    {
      public: 
         void Init(void); 
    
      protected:
        SerialInput m_In[2];
        SerialOutput m_Out[10];
    
    };
    
    class SerialOutput : public Serial
    {
    public: 
       void Init(void); 
    
    protected: 
       CStringArray m_Arr; 
    
    };
    
    class SerialInput : public Serial
    {
    public: 
       void Init(void); 
    
    protected:
       CStringArray m_Arr; 
    
    }; 
    
    SerialInput::SerialInput()
    {
        /* hier ist es kein problem */
        m_Arr.Add(_T("testmessage"));
    }
    void SerialInput::Init()
    {
      /* ********* hier passiert der Zugriffsfehler * */
      m_Arr.Add(_T("testmessage"));
    
    }
    
    /* ****************************** */
    
    void Serial::Init(void)
    {
    
        for(int i=0; i<10; i++)
          m_Out[i].Init();
    
        for(int i=0; i<2; i++)
          m_In[i].Init(); 
    }
    

    Gruß
    Damian



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Fehler gefunden im Schlaf - hab aus Versehen auf m_In[3] zugegriffen, obwohl dies gar nicht definiert war bzw. vorhanden ist... 🙄

    Damian


Anmelden zum Antworten