Comment utiliser les itérateurs de flux ?
Bonjour à tous
J'ai un problème d'utilisation de l'exemple donné dans la faq:
http://c.developpez.com/faq/cpp/?pag...ream_iterators
Voici comment je compte m'en servir pour initialiser mon vecteur:
Code:
1 2 3 4 5 6 7
|
fstream file;
unsigned int i;
file.open("./Data/Layers.txt", ios::in);
file >> i;
C_Layer::s_vctLayers.resize(i);
copy(C_Layer::s_vctLayers.begin(), C_Layer::s_vctLayers.end(), istream_iterator<C_Layer>(file)); |
Sachant que j'ai donc une classe C_Layer avec un attribut static public s_vctLayers de type vector<C_Layer> et que j'ai surchargé les opérateurs de flux >> et <<
A la compilation, j'ai l'erreur suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(2228) : error C2678: '=' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'const C_Layer' (ou il n'existe pas de conversion acceptable)
d:\nouveau dossier\mulhouse 13 04 07\simmulhouse\simmulhouse\fichiers sources\Graphe/C_Layer.hpp(39): peut être 'C_Layer &C_Layer::operator =(const C_Layer &)'
lors de la tentative de mise en correspondance de la liste des arguments '(const C_Layer, C_Layer)'
C:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(2282) : voir la référence à l'instanciation de la fonction modèle '_OutIt std::_Copy_opt<C_Layer*,_OutIt,std::_Iter_random_helper<_Cat1,_Cat2>::_Iter_random_cat>(_InIt,_InIt,_OutIt,_InOutItCat,std::_Nonscalar_ptr_iterator_tag,std::_Range_checked_iterator_tag)' en cours de compilation
with
[
_OutIt=std::istream_iterator<C_Layer>,
_Cat1=std::_Vector_iterator<C_Layer,std::allocator<C_Layer>>::iterator_category,
_Cat2=std::input_iterator_tag,
_InIt=C_Layer *,
_InOutItCat=std::_Iter_random_helper<std::_Vector_iterator<C_Layer,std::allocator<C_Layer>>::iterator_category,std::input_iterator_tag>::_Iter_random_cat
]
.\Fichiers sources\C_Data.cpp(153) : voir la référence à l'instanciation de la fonction modèle '_OutIt std::copy<std::_Vector_iterator<_Ty,_Alloc>,std::istream_iterator<_Ty>>(_InIt,_InIt,_OutIt)' en cours de compilation
with
[
_OutIt=std::istream_iterator<C_Layer>,
_Ty=C_Layer,
_Alloc=std::allocator<C_Layer>,
_InIt=std::_Vector_iterator<C_Layer,std::allocator<C_Layer>>
] |
Voilà j'espère que vous pourrez m'aider