Bonjour
Dans le logiciel que je d�veloppe, j'utilise des std::map<KeyType, ValueType> avec des ValueType diff�rents pour le m�me KeyType.
Je souhaiterais �crire une fonction template capable de me chercher un it�rateur pour une clef donn�e quel que soit ValueType.
D�claration:
Impl�mentation:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 template<class T> typename std::map<KeyType, T>::const_iterator findMatch(std::map<KeyType, T>, KeyType);
Appel :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 template<class T> typename std::map<KeyType, T>::const_iterator findMatch(std::map<KeyType, T> i_map, KeyType i_key) { return i_map.find(i_key); }
Le compilateur est d'accord, mais le linker me jette :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 std::map<KeyType, Truc*> map; KeyType key; /*...*/ std::map<KeyType, Truc*>::const_iterator it = findMatchStrict(map, key);
Si je garde la d�claration telle quel et que j'impl�mente en sp�cialisant :
Code : S�lectionner tout - Visualiser dans une fen�tre � part error LNK2019: symbole externe non résolu [...]
Ca compile et �a link, mais c'est pas ce que je veux...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 std::map<KeyType, Truc*>::const_iterator findMatch(std::map<KeyType, Truc*> i_map, KeyType i_key) { return i_map.find(i_key); }![]()
Partager