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 :
- template<typename T>
- class Image : public Matrix<T>
- {
- /* ... */
- } ;
|
J'utilise la classe Image dans une autre classe template PrintAnalyse contenu dans un fichier qui a cette forme :
Code :
- #ifndef _PRINTANALYSE_1100
- #define _PRINTANALYSE_1100
- #include <fstream>
- #include "Image.h"
- template<typename T>
- class PrintAnalyze {
- Image<T>* image ;
- Image<T>* rayon ;
-
- /* .... */
- public:
- PrintAnalyze() : image(0) { }
- /* .... */
- Image<T>& Image() const { return *image ; } // Ligne 53
- Image<T>& Rayon() const { return *rayon ; }
- /* .... */
- } ;
- #endif
|
J'ai un main qui instancie juste la classe PrintAnalyse :
Code :
- #include "PrintAnalyse.h"
- int main(int argc, char* argv[])
- {
- PrintAnalyse<unsigned char> build ;
- }
|
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