[C++]Est il possible de créer des "fonctions virtuelles globales"?

Est il possible de créer des "fonctions virtuelles globales"? [C++] - C++ - Programmation

Marsh Posté le 21-05-2007 à 22:01:10    

Salut,
 
Imaginons deux classes:
 

Code :
  1. class Car{...};


 
et
 
c

Code :
  1. lass SportCar : public Car {...};


 
 
Imaginons deux foncitons déclarées ainsi (surcharge)
 

Code :
  1. void myfunc(Car* pCar){
  2.   OutputDebugString(TEXT("myfunc2(Car* pCar) is called" ));
  3. }
  4. void myfunc(SportCar* pSportCar){
  5.   OutputDebugString(TEXT("myfunc2(SportCar* pSportCar) is called" ));
  6. }


 
Je voudrais en fait que la "bonne" fonction myfunc soit appelée selon le type réel du pointeur envoyé.
 
Par exemple, je voudrais que:
 
SportCar mySportCar;
Car* pCar = &mySportCar;
myfunc(pCar);
 
appelle void myfunc(SportCar* pSportCar) et non void myfunc(Car* pCar).
 
Est ce possible? Ou suis-je obligé de faire une sorte de RTTI à la volée pour déterminter quel type de fonction appeler?

Reply

Marsh Posté le 21-05-2007 à 22:01:10   

Reply

Marsh Posté le 21-05-2007 à 22:11:30    

faut utilser une fonction membre virtuelle.


Message édité par bjone le 21-05-2007 à 22:22:31
Reply

Marsh Posté le 21-05-2007 à 22:52:33    

D'accord!
 
Donc, ce que je demande est impossible? Non prévu dans la norme?
 
Ce n'est pas un besoin fort que j'ai (car on peut toujours se débrouiller effectivement en utilisant une foncton même virtuelle) mais je me suis posé la question.
 
 
 

Reply

Marsh Posté le 22-05-2007 à 00:06:13    

Si ça existe, c'est exactement la sémantique d'une fonction membre virtuelle. Adapte-toi à la syntaxe. À ne pas confondre avec les multiméthodes  http://www.open-std.org/jtc1/sc22/ [...] n1463.html

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed