Destruktor und AfxEndThread()



  • Wenn ich in einer Funktion ein lokales Objekt erzeuge und dann mit der Funktion AfxEndThread() die Funktion beende wird der Destruktor des Objektes nicht aufgerufen.

    Beispiel:

    #define TESTRESULTAT_FEHLER 20
    
    ...
    
    int function(void){
      Cxxx XXX;
      ...
      ...
      if (aaa != bbb)
        AfxEndThread(TESTRESULTAT_FEHLER, TRUE);
      ...
      ...
      return 0;
    }
    

    Wie muss ich es anstellen, dass der Destruktor von XXX trotzdem Aufgerufen wird?



  • natürlich nicht... woher soll denn der Compiler wissen, dass diese Funktion nie wieder zurückkehrt?



  • Natürlich weis ich das der Compiler das nicht weis. Ich brauche jedoch eine elegante Lösung für dieses Problem.



  • Upps.. frage nicht vollständig gelesen... sorry...

    Warum machst Du nicht einfach

    return TESTRESULTAT_FEHLER;
    

    ?

    Oder geht es Dir um das "bDelete" ?
    Eigentlich solltest Du das CWinThread Objekt ja haben, dann kannst Du ja das "m_bAutoDelete" auf TRUE setzen (was ja schon der default ist).


Anmelden zum Antworten