Template & class

Template & class - C++ - Programmation

Marsh Posté le 12-08-2007 à 22:46:13    

Hello,
J'ai un peu oublié les templates, donc voilà:

 

Je déclare une template de class du style:

 
Code :
  1. template <class T> class MyData
  2. {
  3. public:
  4.     MyData();
  5.     void Setup(string NewName);
  6. private:
  7.     string DataName;
  8.     T TheData;
  9. };
  10. template <class T> void MyData<T>::Setup(string NewName)
  11. {
  12.     DataName=NewName;
  13. }
 

Puis, je crée une classe comme ca:

Code :
  1. class truc
  2. {
  3.      Truc();
  4.      MyData <int> ID();
  5.      MyData <string> Name();
  6. }
 

et dans le constructeur de truc:

 
Code :
  1. truc::truc()
  2. {
  3.     ID.Setup("ID" );
  4.     Name.Setup("Name" );
  5. }
 


Réponse du compilateur (gcc)

myclasses.cc:6: error: ‘((truc*)this)->truc::ID’ does not have class type

 

Pourquoi?  :heink:


Message édité par Ben_be le 12-08-2007 à 22:47:19

---------------
Putain j'ai rêvé de toi cette nuit !! Alors que jte connais même pas !!-LaL0utre | Ben_be est un roxxeur d'ours d'envergure mondiale-Daaadou |Entre un dessert et Ben_be je choisis Ben_be-Ramasse-miette
Reply

Marsh Posté le 12-08-2007 à 22:46:13   

Reply

Marsh Posté le 13-08-2007 à 00:32:35    

Je cerne +/- le problème: j'ai déclaré  
int *ID
dans la classe, puis dans le constructeur, je fais l'allocation avec new, et là ca marche, mais j'ai pas compris pourquoi :??:
C'est du au fait que quand je déclare ma classe dans une classe il passe par le constructeur de la première classe?


---------------
Putain j'ai rêvé de toi cette nuit !! Alors que jte connais même pas !!-LaL0utre | Ben_be est un roxxeur d'ours d'envergure mondiale-Daaadou |Entre un dessert et Ben_be je choisis Ben_be-Ramasse-miette
Reply

Marsh Posté le 13-08-2007 à 08:34:11    

MyData <int> ID();
 
 
déclaration de fonction membre ... aucun problème de template donc.

Reply

Marsh Posté le 13-08-2007 à 09:18:03    

Bon eh oh

 
Code :
  1. class truc
  2. {
  3.      Truc();
  4.      MyData <int> ID;
  5.      MyData <string> Name;
  6. }
 

et dans le constructeur de truc:

 
Code :
  1. truc::truc()
  2. {
  3.     ID.Setup("ID" );
  4.     Name.Setup("Name" );
  5. }
 

Faudra voir à revoir ces bases ^^


Message édité par Joel F le 13-08-2007 à 09:18:18
Reply

Marsh Posté le 13-08-2007 à 13:36:21    

Je suis une bille  :D  
J'y ai pensé en me levant ce matin en plus :D.
Merci Joel [:charlest]


---------------
Putain j'ai rêvé de toi cette nuit !! Alors que jte connais même pas !!-LaL0utre | Ben_be est un roxxeur d'ours d'envergure mondiale-Daaadou |Entre un dessert et Ben_be je choisis Ben_be-Ramasse-miette
Reply

Sujets relatifs:

Leave a Replay

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