[C++] Prototype méthode membre de classe template

Prototype méthode membre de classe template [C++] - C++ - Programmation

Marsh Posté le 19-05-2010 à 20:10:37    

Bonjour,
 
J'ai une classe template nommée QUADTREE.
Dans cette classe, j'ai une structure privée nommée CELL.
Dans cette classe, j'ai une méthode privée GET_CELL, retournant une référence vers CELL.
 
 

Code :
  1. template <class type>
  2. class        Quadtree
  3. {
  4. private:
  5.  struct Cell
  6.  {
  7.  ...
  8.  };
  9.  Cell& get_cell(...);
  10.  ...
  11. };


 
Lorsque je veux déclarer le code de la méthode, j'ai un problème lié au fait que le type retourné est privée et appartient à une classe template.
Voici ce que je pensais être bon :
 

Code :
  1. template <class type>
  2. Quadtree<type>::Cell&
  3. Quadtree<type>::get_cell(Cell& cell, const Coord_2D<float>& location)
  4. {
  5. ...
  6. }


 
En l'état, j'ai l'erreur suivante :
 

Code :
  1. error: need 'typename' before 'Quadtree<type>::Cell' because 'Quadtree<type>' is a dependent scope


 
J'ai essayé comme ceci :
 

Code :
  1. Quadtree::Cell&


 
J'obtiens :
 

Code :
  1. error: invalid use of template-name 'Quadtree' without an argument list


 
J'ai essayé comme ceci :
 

Code :
  1. Quadtree<class type>::Cell&


 
J'obtiens :
 

Code :
  1. error: using template type parameter 'type' after 'class'
  2. error: template argument 1 is invalid


 
Et enfin j'ai essayé comme ceci :
 

Code :
  1. Cell&


 
J'obtiens :
 

Code :
  1. error: 'Cell' does not name a type


 
Pourriez-vous m'indiquer la bonne syntaxe ? Le compilateur est GCC 4.5
 
Je vous remercie par avance !
 

Reply

Marsh Posté le 19-05-2010 à 20:10:37   

Reply

Marsh Posté le 19-05-2010 à 20:53:51    

Ce que te suggérait le message d'erreur

 
Code :
  1. template  <class type>
  2. typename Quadtree<type>::Cell&
  3. Quadtree<type>::get_cell(Cell& cell, const Coord_2D<float>& location)
  4. {
  5.    ...
  6. }



Message édité par Un Programmeur le 20-05-2010 à 09:33:26

---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 19-05-2010 à 21:34:39    

Ah, merci ! Je n'avais pas compris dans le message d'erreur que typename était un mot clé. Encore merci!


---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 04-06-2010 à 17:18:41    

as tu au moin compris pourquoi il faut mettre typename ?

Reply

Sujets relatifs:

Leave a Replay

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