Erreur C2558 - constructeur de copie

Quand je compile ma classe, j'obtiens une erreur grave:

C2558 pas de constructeur de copie disponibles ou le constructeur de copie est déclaré 'explicit'

Mais mon constructeur de copie n'est ni privé, ni explicite!

En-tête:

#include "Csequence.h"

using namespace std;

class Cnoeud
{
private:
    Cnoeud *oNOEpere;
    vector<Cnoeud> oNOEfils;
    Csequence oNOEsequence;
    bool oNOEStatut;

public:
    //Liste des constructeurs
    Cnoeud();
    Cnoeud(Cnoeud &);
    ~Cnoeud(){}

    //Liste des accesseurs et des modificateurs
    Cnoeud * NOEAfficherpere (){ return oNOEpere;}
    vector<Cnoeud> NOEAfficherfils() {return oNOEfils;}
    Csequence NOEAffichersequence() {return oNOEsequence;}
    bool NOEAfficherstatut() { return oNOEStatut;}
    void NOEModifierpere(Cnoeud oNOEp){ *oNOEpere=oNOEp;}
    void NOEModifierfils(vector<Cnoeud>);
    void NOEModifiersequence(Csequence oNOEs){oNOEsequence = oNOEs;}
    void NOEModifierstatut(bool {oNOEStatut = b;}

    //Liste des fonctions membres
    void NOEViderfils(){ oNOEfils.clear();}

    //Surcharge de l'opérateur d'affectation
    Cnoeud & operator=(Cnoeud &) ;
};

Source:

Cnoeud.cpp

#include <iostream>
#include <vector>
#include "Cnoeud.h"

using namespace std;

Cnoeud::Cnoeud()
{
    oNOEStatut= 0;
    oNOEsequence.SEQInitialiserdatesfin(); 
    oNOEsequence.SEQInitialisersequence();
    oNOEpere = NULL;
}

Cnoeud::Cnoeud(Cnoeud & oNOE)
{
    oNOEStatut= oNOE.oNOEStatut;
    oNOEsequence = oNOE.NOEAffichersequence(); 
    oNOEpere = oNOE.NOEAfficherpere();
    oNOEfils.clear();
    vector<Cnoeud>::iterator it;
    for(it=oNOE.NOEAfficherfils().begin();it!=oNOE.NOEAfficherfils().end();it++)
    {
        oNOEfils.push_back(*it);
    }
}
En quelque sorte, votre code perdu tous indentation lors de copier-coller à partir de votre IDE. Il serait beaucoup plus facile à lire si vous pouviez corriger cela. Il doit aussi y avoir quelque chose qui manque. # endif est juste coincé là au hasard, sans #if.
Pour être autorisé à utiliser un const déclaré de l'objet de fonctions, les fonctions doivent être déclarées comme const ainsi, ou le compilateur ne sait pas si les fonctions de modifier la const objet. Je recommande la lecture de Const Correctness lien sur le C++ FAQ du site.

OriginalL'auteur undertaker705 | 2011-01-13