Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Konstruktor und Rückgabe beim Scheitern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.09.2003, 13:11 Uhr
~stephanw
Gast


Hi !

Ich habe einen Konstruktor, in dem ich Speicher anfordere. Wenn das nicht klappt, würde ich das gerne mitteilen, damit dort wo das Objekt angelegt wird, geeignet reagieren kann. Einen Rückgabewert für den Konstruktor kann man aber nicht definieren, oder ? Wie löst Ihr das sonst ? Mir fällt sonst nur ein, dass ich eine extra-Methode schreiben und ausführen müsste (dann mit Rückgabe) aber das finde ich nicht sonderlich elegant.

Vielen Dank und Grüße, Stephan.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.09.2003, 13:16 Uhr
virtual
Sexiest Bit alive
(Operator)


Mit Exceptions:

C++:
class Klasse
{
     Klasse() {
        char* viel_speicher = new char [100];
     }
};


Ein Standardconformer Compiler wirft, wenn das new schief geht, eine Excpetion. Solche, die das nicht machen, zB der VC, geben einen NULL Pointer zurück und dann muß man extra per Hand die Exception werfen. Okay, wenn Du jetzt schreibst:

C++:
   Klasse* x;
   try
   {
      x = new Klasse;
   }
   catch(...)
   {
      ... Hier fehler fangen
   }


Kannst du im catchblock den fehler fangen. Und da C++ schlau es, hat es für dich automatisch den ctor aufruf gecancelt und das Obejtk sofort wieder destruíert.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 08.09.2003 um 13:18 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.09.2003, 13:26 Uhr
~stephanw
Gast


Gut. Dann muss ich mich mal über Exeptions genauer informieren. Allerdings bin ich dann drauf angewiesen, dass die Benutzer meiner Klasse ebenfalls schlau sind und den Aufruf in try..catch -Block fassen. Machen Sie das nicht ... ende oder ich muss in meinem Objekt bei jedem Zugriff nachsehen, obs auch geklappt hat. Aber Ok, trotzdem schonmal vielen Dank für diese superschnelle Antwort ;-) !

Gruß, Stephan.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.09.2003, 13:56 Uhr
RHBaum



Schreibst du wiederverwertbaren Code (das tun wir doch alle), solltest tunlichst Exception-neutralen (und exception sicheren) code schreiben ... , sprich deine Exception in der Letzten Barriere vorm BS und User abfangen (da wo der Code am wenigsten wiederverwendbar ist) ! :-)

Sprich, bei den exceptions kann man es sich meist !!! einfach machen, der Nutzer deiner Klassen (im Sinne von: die Arme Sau die deinen Code in seinem eignen Program verwendet ) ist der Verantwortliche ! Und besser als ueber exceptions kannst den "Nutzer" halt ueber Fehlfunktionen ned informieren !

Wenn der Projektmanager ne nichtabgefange Exception um die Ohren bekommt, ist immer der Schuld, dessen code die Exception ans BS gegeben hat ... und nich der, der die Exception nach oben gereicht hat !

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.09.2003, 14:08 Uhr
~stephanw
Gast


Ok alles klar, nochmal vielen Dank. Komme gerne wieder ;-)

Grüße, Stephan.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: