Bonjour.

Si j'ai les classes suivantes:
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 { [...] };
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
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.  
    }
  }
C'est pour éviter de faire 2 fois le dynamic_cast, une fois dans la condition du if, l'autre dans le traitement.

Merci.