🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #805

"Uberladen des Ausgabeoperators f"ur Streams.

#805
From: Thomas Trenz
Date: Thu, 16 Nov 1995 10:45
68 lines
1695 bytes
Hi Leute,

ich arbeite mit Exception-Klassen und habe f"ur jede Exception-Klasse
einen Ausgabe-Operator f"ur Streams geschrieben. Kann man bei dem
Operator << auch den virtuellen Mechanismus verwenden, so daß das
folgende Beispiel die "richtige" Ausgabe liefert?

class ExceptionBase
{
};

class ExceptionA
{
};

class ExceptionB
{
};

ostream & operator << (ostream & os, const ExceptionBase &b)
{
   os << "Base" << endl;
}
ostream & operator << (ostream & os, const ExceptionA &b)
{
   os << "ExceptionA" << endl;
}
ostream & operator << (ostream & os, const ExceptionB &b)
{
   os << "ExceptionB" << endl;
}




Jetzt der C++-Code:

void Testfunktion (int Parameter) throw (ExceptionBase)
{
  switch (Parameter)
    {
      case 0 : throw ExceptionA();
      case 1 : throw ExceptionB();
    }
}


int main (int argc, char *argv[])
{
  try
    {
       Testfunktion (1);
    }
  catch (ExceptionBase &e) { cout << e << endl; }
}

Ausgabe:

Base  



Ist es möglich, das Programm so zu modifizieren, daß die Fehlermeldung
des abgeleiteten Typs ausgegeben wird?
Also ist es möglich irgendwie eine Art virtuellen Ausgabeoperator zu
schreiben?

Vielen Dank schon mal...
Technical Details
Message-ID: <48f4mh$3h6@Dortmund.Germany.EU.net>
Path: arc1-ca.pugleaf.net!Dortmund.Germany.EU.net!news-intern

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!Dortmund.Germany.EU.net!news-intern
From: trenz@ids-scheer.de (Thomas Trenz)
Newsgroups: de.comp.lang.c++
Subject: "Uberladen des Ausgabeoperators f"ur Streams.
Date: Thu, 16 Nov 1995 10:45:05 GMT
Organization: Customer of EUnet Germany; Info: info@Germany.EU.net
Distribution: world
Message-ID: <48f4mh$3h6@Dortmund.Germany.EU.net>
Reply-To: trenz@ids-scheer.de
NNTP-Posting-Host: zeus.ids-scheer.de
X-Newsreader: Forte Free Agent v0.55