Bonjour � tous, j'esp�re que mon petit probl�me vous int�ressera.
J'ai une classe abstraite, je cr�e ensuite une classe ayant comme membre une r�f�rence sur cette classe abstraite et enfin je cr�e une classe ayant comme membre un vecteur de ma classe pr�c�dente :
A la compilation le compilateur me dit en gros qu'il y'a un probl�me avec mon op�rateur d'affectation :
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
23 #include <vector> struct foncteur { virtual int operator()(double ) =0; }; struct Classe_1 { Classe_1(foncteur & f) : f(f) {} private : foncteur & f; }; struct Classe_2 { Classe_2(int n, foncteur & f); private : int n; std::vector<Classe_1> V; }; Classe_2::Classe_2(int n, foncteur & f) : n(n) { V.reserve(n); for(int i=0; i<n; ++i) V.push_back(Classe_1(f)); }
Lorsque je d�finis l'op�rateur d'affectation trivial il n'y a plus de probl�me, de m�me lorsque j'utilise une liste au lieu d'un vecteur il n'y a plus de probl�me.test.cpp: In member function �Classe_1& Classe_1::operator=(const Classe_1&)�:
test.cpp:7: instantiated from �void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = Classe_1, _Alloc = std::allocator<Classe_1>]�
/usr/include/c++/4.0.0/bits/stl_vector.h:610: instantiated from �void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = Classe_1, _Alloc = std::allocator<Classe_1>]�
test.cpp:22: instantiated from here
test.cpp:7: error: non-static reference member �foncteur& Classe_1::f�, can't use default assignment operator
/usr/include/c++/4.0.0/bits/vector.tcc: In member function �void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = Classe_1, _Alloc = std::allocator<Classe_1>]�:
/usr/include/c++/4.0.0/bits/vector.tcc:260: warning: synthesized method �Classe_1& Classe_1::operator=(const Classe_1&)� first required here
J'aimerais donc comprendre pourquoi je dois d�finir l'op�rateur d'affectation dans mon cas ainsi que pourquoi le probl�me est soulev� lorsque j'utilise un vecteur et pas une liste.
Je vous remercie d'avance pour vos r�ponses.
Partager