Bonjour à tous
J'ai quelques soucis sur la déclaration d'un template dans un namespace (__gnu_cxx). Faut dire que je suis un peu débutant en C++...
Le code provient d'un programme sous Linux, et je dois le porter sur Windows.
Sous linux, normalement on importe <ext\hash_map> et <ext\hash_set>, et dans mon cas j'ai remplacé par <hash_map> <hash_set>.
Là j'ai un problème à la ligne où est declaré la structure hash :Code:
1
2
3
4
5
6
7
8
9
10
11
12 #include <hash_map> #include <hash_set> #include "IPvXAddress.h" #define ... namespace __gnu_cxx { template<> struct hash< IPvXAddress > { ...
- syntax error : missing ';' before '<'
- explicit specialization; '__gnu_cxx::hash' is not a specialization of a class template
Là je ne sais pas tellement quoi faire. En relisant le document C++ de H. Garreta je ne retrouve pas ce genre de syntaxe pour les templates.
2nd header :
Et ici également un problème de syntaxe à la ligne où je définie hash_set (syntax error : missing ';' before '<'). C'est assez similaire au problème plus haut je suppose.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 ... #include "IPvXAddress.h" #include "HashFunc.h" using namespace __gnu_cxx; using namespace std; class TransportAddress { public: class hashFcn { public: size_t operator()( const TransportAddress& h1 ) const { return h1.hash(); } }; public: // a hashed set of TransportAddresses typedef hash_set <TransportAddress, hashFcn> Set; public: IPvXAddress ip; ...
Voilà, j'espere avoir été assez clair.
Merci d'avance
bon week end