Bonjour,
je me suis fait une petite classe Map qui hérite de std::map et j'ai un souci de compilation selon la version de gcc :
Voici le début de ma classe :
avec la version de gcc 5.3.1, ça compile sans problème et sans warning.
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 template <typename Key,typename Value> class Map : public std::map<Key,Value> { public: using typename std::map<Key,Value>::const_iterator ; using std::map<Key,Value>::operator [] ; using std::map<Key,Value>::insert ; using std::map<Key,Value>::begin ; using std::map<Key,Value>::find ; using std::map<Key,Value>::end ; Map & add ( const Map & other ) { for ( const_iterator i = other.begin() ; i != other.end() ; ++i ) // <--- ligne de l'erreur (*this)[i->first] = i->second ; return *this ; }
Avec la version 4.4.7, j'ai cette erreur :
Et là, mes maigres connaissances de c++ trouvent leur limite...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 In member function "common::Map<Key, Value>& common::Map<Key, Value>::add(const common::Map<Key, Value>&)": error: expected ";" before "i" error: "i" was not declared in this scope
Y a-t-il moyen de trouver une syntaxe équivalente qui compile avec les 2 versions de gcc ?
Merci d'avance !
Partager