IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

Obligation de d�finir l'op�rateur d'affectation d'une classe utilis�e comme membres d'un vecteur


Sujet :

SL & STL C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Par d�faut Obligation de d�finir l'op�rateur d'affectation d'une classe utilis�e comme membres d'un vecteur
    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 :
    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));
    }
    A la compilation le compilateur me dit en gros qu'il y'a un probl�me avec mon op�rateur d'affectation :
    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
    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.
    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.

  2. #2
    Membre Expert

    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Ao�t 2004
    Messages
    1 391
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 1 391
    Par d�faut
    Bonjour,

    Active le C++11/14 et ton erreur devrait dispara�tre. C'�tait probablement requis en C++03 que le type des �l�ments ait un op�rateur d'affectation par copie comme c'est demand� pour les op�rateurs d'insertion, mais la contrainte a depuis �t� rel�ch� pour push_back.

Discussions similaires

  1. [WD18] Types incompatibles durant une affectation dans une classe.
    Par Romanops dans le forum WinDev
    R�ponses: 2
    Dernier message: 12/05/2014, 12h13
  2. R�ponses: 2
    Dernier message: 07/05/2012, 13h11
  3. StructLayout(LayoutKind.Sequential) affectation d'une classe
    Par Geo2A dans le forum Windows Forms
    R�ponses: 0
    Dernier message: 15/02/2010, 15h03
  4. Ne pas d�finir d'op�rateur de tri dans une map
    Par Muetdhiver dans le forum SL & STL
    R�ponses: 5
    Dernier message: 14/11/2007, 14h38
  5. [langage] op�rateur d'affectation binaires
    Par biglebowski13 dans le forum Langage
    R�ponses: 6
    Dernier message: 21/11/2006, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo