Bonjour à tous,

dans le projet sur lequel je travaille actuellement, j'ai besoin d'écrire une fonction qui imite le comportement d'un static ou d'un dynamic_cast, selon qu'on est en Débug ou en Release. En clair, je dois écrire une fonction comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
template< typename T > T safe_cast( expr ) {
#ifdef _DEBUG
T res = dynamic_cast< T >( exp );
ASSERT( res != NULL );
return res;
#else
return static_cast< T >( exp );
#endif
}
Ce bout de code n'est pas valide, car exp n'a pas de type. Comment faire pour spécifier un type générique (comme par exemple l'objet Object en Java) en C++ ?

Par ailleurs j'ai écrit une macro qui fonctionne bien, mais je voudrais éviter d'utiliser ce genre de macros. Merci d'avance !