La fonction de cast
dynamic_cast ne marche pas sous Visual C++ 6.0, alors qu'elle marche très bien sous Dev C++.
#include <iostream>
#include <typeinfo>
using namespace std ;
class A
{
public :
virtual void affiche () {}
} ;
class B : public A
{
public :
void affiche () {}
} ;
int main ()
{
B* pb = new B ;
A* pa ;
pa = pb ;
if (dynamic_cast<B*>(pa) != NULL)
cout << "oui\n" ;
else
cout << "non\n" ;
system ("PAUSE") ;
return 0 ;
}
Sous Dev C++, il m'affiche "oui", sous Visual C++ 6.0, il me met d'abord un message à la compilation :
C:\Documents and
Settings\Frédéric\Mes documents\Mes jeux\test\test.cpp(22) : warning
C4541: 'dynamic_cast' used on polymorphic type 'class A' with /GR-;
unpredictable behavior may result
Puis, il me met un message d'erreur à l'execution !
A quoi est-ce dù ? (J'aimerais bien pouvoir continuer à utiliser Visual C++ !)