[C++/Template] Problème d'organisation des fichiers ?

Problème d'organisation des fichiers ? [C++/Template] - C++ - Programmation

Marsh Posté le 06-05-2004 à 02:58:00    

Bonjour tout le monde !
 
J'ai un petit soucis de compilation. Avant de copier inutilement du code sur le forum, je veux m'assurer qu'il ne s'agit pas d'une erreur bête.
 
Je possède une classe template Image qui hérite d'une classe template Matrix :
 

Code :
  1. template<typename T>
  2. class Image : public Matrix<T>
  3. {
  4. /* ... */
  5. } ;


 
J'utilise la classe Image dans une autre classe template PrintAnalyse contenu dans un fichier qui a cette forme :
 

Code :
  1. #ifndef _PRINTANALYSE_1100
  2. #define _PRINTANALYSE_1100
  3. #include <fstream>
  4. #include "Image.h"
  5. template<typename T>
  6. class PrintAnalyze {
  7.      Image<T>*   image ;
  8.      Image<T>*   rayon ;
  9.        
  10.      /* .... */
  11.      public:
  12.      PrintAnalyze() : image(0) { }
  13.      /* .... */
  14.      Image<T>& Image() const { return *image ; } // Ligne 53
  15.      Image<T>& Rayon() const { return *rayon ; }
  16.      /* .... */
  17. } ;
  18. #endif


 
J'ai un main qui instancie juste la classe PrintAnalyse :
 

Code :
  1. #include "PrintAnalyse.h"
  2. int main(int argc, char* argv[])
  3. {   
  4.      PrintAnalyse<unsigned char> build ;
  5. }


 
Et j'obtiens les erreurs suivantes à la compilation (ce sont les toutes premières, y'en a une tripotée d'autres qui en découle) :


PrintAnalyse.h:53: error: syntax error before `&' token
PrintAnalyse.h:54: error: ISO C++ forbids defining types within return type


         
Si je change le #include "Image.h" par la forward declaration suivante :


template<typename T>
class Image ;


J'obtiens le même message d'erreur.
 
Est-ce que cela vous suffit pour me dire s'il s'agit d'une erreur caractéristique, ou bien avez-vous besoin de voir plus de choses ?
 
Merci à vous ! @+


Message édité par Evadream -jbd- le 06-05-2004 à 03:02:23
Reply

Marsh Posté le 06-05-2004 à 02:58:00   

Reply

Marsh Posté le 06-05-2004 à 03:05:24    

        Image<T>& Image() const { return *image ; } // Ligne 53
         Image<T>& Rayon() const { return *rayon ; }  
 
 
déjà t'as un problème de constness
 
et surtout tu fous la merde à donner le même nom à 36 trucs: résultat c'est le bronx entre type, opérateur de conversion et membre

Reply

Marsh Posté le 06-05-2004 à 03:19:00    

Taz a écrit :

Image<T>& Image() const { return *image ; } // Ligne 53
Image<T>& Rayon() const { return *rayon ; }  
déjà t'as un problème de constness


 
Exact.
 

Taz a écrit :


et surtout tu fous la merde à donner le même nom à 36 trucs: résultat c'est le bronx entre type, opérateur de conversion et membre


 
EDIT : ok boulay coding style. Je reviens [:ddr555]
 
Merci pour ton intervention.


Message édité par Evadream -jbd- le 06-05-2004 à 03:20:57
Reply

Marsh Posté le 06-05-2004 à 03:25:31    

Je dirais pas depuis combien de temps j'ai le nez dedans. Ca ne compile toujours pas, mais ca vient d'autre part :) Je vais voir çà.
 
Merci de m'avoir débloqué.

Reply

Sujets relatifs:

Leave a Replay

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