Probleme mit Rückgabewert



  • Hallo Zusammen,

    ich hoffe, ihr könnt mir weiterhelfen und sagen was mein Fehler ist. 😞

    Und zwar hab ich selber eine Klasse geschrieben: chapter.
    So, meine Funktion um die es hier geht hat von Rückgabewert den Typ chapter.

    Hier kurz etwas code:

    #include "chapter.h"
    
    //...
    
    chapter CHtmlDlg::GetChapterTitel(CString text)
    {
        chapter chap;
        //...
        //chap werden Werte hinzugefügt
        //...
        return chap;
    }
    

    wenn ich das Programm ausführe, erscheint folgende Fehlermeldung:
    "Unbehandelte Ausnahme in Html.exe(MFC42D.DLL):0xC0000005: Access Violation."

    und auf diese Zeile wird verwiesen:

    CString::CString(const CString& stringSrc)
    {
        ASSERT(stringSrc.GetData()->nRefs != 0);
        //...
    }
    

    wenn ich das debugge sehe ich, dass er an der Stelle von meinem Return (oben in der Funktion) hängen bleibt. 😕

    Weiss nicht wo mein Fehler liegt, kann ihn einer von euch vielleicht sehen? 😕

    Bin für jede hilfe dankbar!



  • was vielleicht noch wichtig ist, wie ich diese Funktion aufrufe:

    //...
    void CHtmlDlg::FilterFile()
    {
     std::vector<chapter> uChapter;
     CString kapitel;
     //...
     uChapter.push_back( GetChapterTitel(kapitel) );
     //...
    }
    


  • Lass mich raten - du verwendest CString's in deiner chapter-Klasse. (Die Assertion dürfte beim Kopieren eines Member von 'chap' auf die temporäre Variable aufgetreten sein).

    Da solltest du mal schauen, was du mit deinem Objekt gemacht hast - und ob du es eventuell in Stücke geschossen hast (Speicher-Überschreibungen etc können da übel sein).



  • Hi CStoll,

    danke für deine Antwort. 🙂

    Hast recht, benutze CString in der chapter-Klasse. 😉

    Wie kann ich nachsehen, ob ich das Objekt zerschossen hab? 😕
    Wenn ich mit n Debugger durchgehe und kurz vor dem ausführen des

    return chap;
    

    bin, hat chap vernünftige Werte und alle Elemente sind okay. Dem Objekt werden in der Funktion eignetlich nur Kapitelnummer und Kapitelname übergeben.

    danke nochmals,



  • habe eine Variable nicht initalisiert. 🙄
    Hab das korrigiert und nun funktioniert es wieder.... 😕 🙂



  • Zeig uns mal deine Klasse "chapter".
    Verwendest du dort irgendwelche Zeiger?

    - zu spät -


Anmelden zum Antworten