Ausnahmebehandlung throw von Objekten



  • Hallo vielleicht kann jemand einem Anfänger wie mir aus der Patsche helfen:

    ////////Header:
    class CError
    {
    public:
      int a; 
      void Fehler1(int a);
    };
    CError obj;
    //////main:
    #include "stdafx.h"
    #include "Errors.h"
    int main(int argc, char* argv[])
    {  
      int a=2;
      try
      {
          printf("Hallo Welt!\n");
      }
     catch(CError &obj)
      {
      }
      catch(...)
      {
      }
      CError::Fehler1(a);
      throw(obj);
    	return 0;
    }
    

    ///////////Fehlermeldung:

    Fehlerbehandlung mit Objekten\Fehlerbehandlung mit Objekten.cpp(29) : error C2352: 'CError::Fehler1' : Unzulaessiger Aufruf einer nicht statischen Member-Funktion
            d:\projekte\praktikum\fehlerbehandlung mit objekten\errors.h(6) : Siehe Deklaration von 'Fehler1'
    Fehler beim Ausführen von cl.exe.
    
    Fehlerbehandlung mit Objekten.exe - 1 Fehler, 0 Warnung(en)
    

    würd mich freuen wenn mir jemand hilft

    crios



  • criosj schrieb:

    error C2352: 'CError::Fehler1' : Unzulaessiger Aufruf einer nicht statischen Member-Funktion

    Dein Compiler sagt doch schon alles. Du rufst eine Funktion wie eine statische auf, jedoch ist es keine, sondern eine Member Funktion. Du brauchst deshalb eine Instanz für den Aufruf, zB

    obj.Fehler1(a);
    

    In Zukunft bitte Code-Tags beim Posten verwenden.



  • obj ist außerhalb der catch sowieso ungültig.
    Du solltest das schon vom catch aus weiterwerfen, ist sonst doch unlogisch... 😕

    PS: Ich habe mal die Codetags nachgearbeitet. Ist zum Lesen angenehmer. Denk bitte dran: sfds



  • estartu_de schrieb:

    obj ist außerhalb der catch sowieso ungültig.

    Nicht wirklich. Es gibt ja noch das globale obj. Ansonsten gehört das throw natürlich in den try Block, sonst macht das catchen keinen Sinn.



  • Ups, das globale habe ich übersehen. Aber sowas sollte man ja eh vermeiden. 😉


Anmelden zum Antworten