Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1595 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [interrogation écrite] fonction membre template virtuelle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[interrogation écrite] fonction membre template virtuelle

n°531882
Taz
bisounours-codeur
Posté le 05-10-2003 à 16:24:21  profilanswer
 

petite interrogation aujourd'hui. il y a 2 erreurs dans se code. vous allez facilement les repérer, la question c'est en fait de savoir pourquoi est-ce invalide ?
 
le développement d'un autre de mes sujets m'a fait pensé à ce petit problème. saurez vous le trouver et l'expliquer ?
 

Code :
  1. template<typename T>
  2. struct Foo
  3. {
  4.   virtual void compute() const
  5.   { }
  6. };
  7. struct Bar
  8. {
  9.   template<typename U>
  10.   virtual void compute() const
  11.   { }
  12. };
  13. template<typename T>
  14. struct Baz
  15. {
  16.   template<typename U>
  17.   virtual void compute() const
  18.   { }
  19. };
  20. template<typename T>
  21. void computeAll()
  22. {
  23.   Foo<T>().compute();
  24.   Bar().compute<T>();
  25.   Baz<T>().template compute<T>();
  26. }
  27. int main()
  28. {
  29.   computeAll<double>();
  30. }


 
NB : oh un .template
 
biensur après je donne la solution. ce sujet à juste pour but de démasquer un petit piège.


Message édité par Taz le 05-10-2003 à 16:27:10
mood
Publicité
Posté le 05-10-2003 à 16:24:21  profilanswer
 

n°531940
Taz
bisounours-codeur
Posté le 05-10-2003 à 18:11:03  profilanswer
 

ok, vous n'êtes pas joueurs :/

n°531951
ffluff
Challenge Everything
Posté le 05-10-2003 à 18:48:54  profilanswer
 

j'essaye :
virtual dans une classe de base permet de dire que dans les types dérivées cette fonction peut etre redéfinis alors qu'en mettant le template tu la defini pour tous les types.
 
C'est pas ca TAZ me l'a dit, il a dit aussi que dans ce que j'ai dit y a quelque chose d'interessant pour al réponse mais quoi :??:

n°531952
schnapsman​n
Zaford Beeblefect
Posté le 05-10-2003 à 18:52:53  profilanswer
 

issu des -vieilles- specs du c++ iso que j'ai:
 

Citation :


14.5.2 Member templates
...
A member function template shall not be virtual.
template<class T> struct AA {
  template<class C> virtual void g(C);   // error
  virtual void f();   // OK


 
Pourquoi? j'y avais jamais réfléchi avant, mais j'imagine que pour faire marcher la virtual table avec cette feature, ça doit compliquer l'implémentation, voir l'allourdir.
 
Pour le .template, c'est pour éviter une ambiguité syntaxique pendant le parsing d'une class template qui utilise elle même des membres template.
 
 


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°531956
Taz
bisounours-codeur
Posté le 05-10-2003 à 18:54:12  profilanswer
 

fFluFf a écrit :

j'essaye :
virtual dans une classe de base


c'est sur que dans une classe de petits écoliers ça marche tout de suite moins bien

fFluFf a écrit :


permet de dire que dans les types dérivées cette fonction peut etre redéfinis

non
 

fFluFf a écrit :


alors qu'en mettant le template tu la defini pour tous les types.

:heink:  
 

fFluFf a écrit :

C'est pas ca TAZ me l'a dit, il a dit aussi que dans ce que j'ai dit y a quelque chose d'interessant pour al réponse mais quoi :??:  

pour plus d'incompréhension


Message édité par Taz le 05-10-2003 à 19:01:21
n°531958
Taz
bisounours-codeur
Posté le 05-10-2003 à 18:55:26  profilanswer
 

SchnapsMann a écrit :

issu des -vieilles- specs du c++ iso que j'ai:
 

Citation :


14.5.2 Member templates
...
A member function template shall not be virtual.
template<class T> struct AA {
  template<class C> virtual void g(C);   // error
  virtual void f();   // OK


 
Pourquoi? j'y avais jamais réfléchi avant, mais j'imagine que pour faire marcher la virtual table avec cette feature, ça doit compliquer l'implémentation, voir l'allourdir.

t'es  pas drole. mais est ce que tu saurais dire plsu précisément pourquoi ?


Message édité par Taz le 05-10-2003 à 18:55:45
n°531962
schnapsman​n
Zaford Beeblefect
Posté le 05-10-2003 à 19:00:09  profilanswer
 

Taz a écrit :

t'es  pas drole. mais est ce que tu saurais dire plsu précisément pourquoi ?


et bien déjà parce que pour une fonction membre virtuelle donnée, on s'attend à n'en trouver qu'une seule par classe héritière. Or avec une fonction membre template virtuelle, il peut y en avoir plusieurs différentes selon les diverses instanciations se déroulant à la compilation.


Message édité par schnapsmann le 05-10-2003 à 19:01:19

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°531965
Taz
bisounours-codeur
Posté le 05-10-2003 à 19:03:54  profilanswer
 

voilà. et comme l'invariant de la POO dis que les informations concernant ces mécanismes font partie de l'objet lui même, et qu'un template engendre potentiellement et à n'importe quand une famille infinie de tempalte instanciés, et dernier point que la taille d'un objet ne doit pas varier,. CQFDs

n°531972
ffluff
Challenge Everything
Posté le 05-10-2003 à 19:09:54  profilanswer
 

je vois pas en quoi ce que j'ai dis avez des trucs intéressant :??:

n°531976
schnapsman​n
Zaford Beeblefect
Posté le 05-10-2003 à 19:12:38  profilanswer
 

fFluFf a écrit :

je vois pas en quoi ce que j'ai dis avez des trucs intéressant :??:


 
je te met 10/10, mais juste parce que c'est le jour de dimanche martin  [:tinostar]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
mood
Publicité
Posté le 05-10-2003 à 19:12:38  profilanswer
 

n°532210
xiluoc
un pc pour les unirs ....
Posté le 06-10-2003 à 00:55:42  profilanswer
 

une structure peu contenir une fonction ?
(heu en fait c est quoi ca virtual void compute() const )
 :sweat:


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°532229
Joel F
Real men use unique_ptr
Posté le 06-10-2003 à 07:17:21  profilanswer
 

Bah allez, laisse les grandes personnes disctuées et repart t'acheter un bouquin de C++. Reveient d'ici 1 ou 2 ans (j/k)
 
:p  :sol:  :hello:


Message édité par Joel F le 06-10-2003 à 07:17:36
n°532419
xiluoc
un pc pour les unirs ....
Posté le 06-10-2003 à 13:53:22  profilanswer
 

grande personne mon cul.
j ai 68 ans.


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°532421
chrisbk
-
Posté le 06-10-2003 à 13:54:49  profilanswer
 

Ben laisse tber le C/C++ et va faire du cobol :O

n°532425
xiluoc
un pc pour les unirs ....
Posté le 06-10-2003 à 14:04:07  profilanswer
 

Dans 1 an j aprenderai a taz comment coder  :whistle:     [:ddsm]


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°532463
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 06-10-2003 à 14:38:14  profilanswer
 

xiluoc a écrit :

grande personne mon cul.
j ai 68 ans.  


Citation :

Date de naissance :   02-04-1983
Métier / Occupations :  STUDENT


 [:meganne]


---------------
J'ai un string dans l'array (Paris Hilton)
n°532981
xiluoc
un pc pour les unirs ....
Posté le 07-10-2003 à 01:41:58  profilanswer
 

Harkonnen a écrit :


Citation :

Date de naissance :   02-04-1983
Métier / Occupations :  STUDENT


 [:meganne]


 [:alarmclock119] , vous pensiez vraiemt que j avais 68 ans     [:dams86]


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°533018
gilou
Modérateur
Modzilla
Posté le 07-10-2003 à 08:52:51  profilanswer
 

Moi, non.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [interrogation écrite] fonction membre template virtuelle

 

Sujets relatifs
[resolu] fonction choiceComment faire afficher une image en fonction d'une catégorie ?
Pb avec la fonction isNull qui marche pasfonction de simplification de fraction ??
Fonction Shell et redirection de flux d'un exe (>)Fonction CreateImageFromJPG() pb couleur miniature ...
[applet] La fonction paint()Ptit pb de fonction -> Ca doit pas être très difficile à mon avis...
[delphi] utilisation du findComponent dans une fonction if?fonction de comparaison entre plusieurs variables
Plus de sujets relatifs à : [interrogation écrite] fonction membre template virtuelle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR