Bonjour.
Si j'ai les classes suivantes:
Est-ce que le code suivant est du C++ standard? (c'est à dire, est-ce que déclarer une variable dans le if est valide?). Il semblerait que ça marche en VC6.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class Base { public: virtual ~Base(); [...] }; class One : public Base { [...] }; class Two : public Base { [...] };
C'est pour éviter de faire 2 fois le dynamic_cast, une fois dans la condition du if, l'autre dans le traitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void aFunction( const Base & object ) { if (const One* pOne = dynamic_cast<const One*>(&Object)) { pOne->doSomething(); } else if (const Two* pTwo = dynamic_cast<const Two*>(&Object)) { pTwo->doSomethingElse(); } else { // No use of pOne or pTwo. } }
Merci.
Partager