ich spiele gerade etwas rum, und zwar mit exceptions.
Ich habe folgenden Code (Ich will mal nicht jede Klasse aufschreiben, ich versuche aussagekräftige Namen zu nehmen) :
Code: Alles auswählen
try
{
throw ExceptionXYZ_DerivedFromExceptionBase(arg1,arg2,arg3);
}
catch( ExceptionBase& exception ) // <== "ExceptionXYZ_DerivedFromExceptionBase" wird ja hier auf jeden Fall "gefangen"
{
ExceptionXYZ_DerivedFromExceptionBase* exceptionXYZ( dynamic_cast<ExceptionXYZ_DerivedFromExceptionBase*>(&exception ) );
// der Cast funktioniert hier nicht!!
}
Was mir spontan einfällt:
Einen eigenen cast schreiben, der anhand des Klassennamens prüft, ob der Cast funktioniert.
Allerdings stehe ich da wieder vor einem Problem:
Ich muss so oder so einen cast durchführen.
Mal etwas Code:
Code: Alles auswählen
T my_dynamic_cast<T>( ExceptionBase* exception)
{
if( T.getClassName() == exception->getClassName() )
{
// hier müsste irgendetwas passieren, was aus "exception" eine Instanz von "T" macht, und zurueckgegeben wird
}
}