je ne vous poste que le début du code car le reste est 1/ fort banal 2/ vraissemblablement pas cause du probléme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef _INDEX_ARR__H__ #define _INDEX_ARR__H__ #include "base/Manager.h" #include "math/vector.h" namespace zodiac { namespace Graphic { template <unsigned int s> class IndexArray : public base::Manager<math::BasicVector<int,s> > { public: int * GetIndex(int i) { return (int*) Manager<math::BasicVector<int,s> >::GetItem(i); }
vous aurez l'oeil attiré par le Manager<math::BasicVector<int,s> >::GetItem(i); qui remplace un banal GetItem(i) dans GetIndex().
GetItem(i) est déclarée sans probléme (et utilisée avec une autre classe qui n'a pas de template sur le s, mais qui se déclare formellement <float,3>)
Elle est déclarée dans la classe Manager, Sous forme normale et sous forme constante
(T GetItem(int) et const T GetItem(i) const)
En fait dés que je vire le Manager<math::BasicVector<int,s> >:: que je n'aime pas etre obligée d'employer je recois un
j'ai déjà eu le probléme avec des héritages multiples sur des Manager de types différents, mais je m'apercois maintenant que je l'avais mal compris et corrigé par erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ./graphic/IndexArray.h: In member function int* zodiac::Graphic::IndexArray<s>::GetIndex(int): ./graphic/IndexArray.h:21: erreur: there are no arguments to GetItem that depend on a template parameter, so a declaration of GetItem must be available ./graphic/IndexArray.h:21: erreur: (if you use -fpermissive, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
(somme toute mon probléme ce n'est pas le probléme puisque ca marche comme ca, mais pourquoi cette erreur se déclenche? dois je aller faire un tour dans le man GCC ?)
j'utilise g++ sous linux.
(merci d'avance de votre aide)
Partager