Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais
Nous recommandons d’utiliser Visual Studio 2017

Erreur du compilateur C2621

le membre 'identificateur' de l'union 'union' a un constructeur de copie

Un membre union ne peut pas avoir de constructeur de copie.

L'exemple suivant génère l'erreur C2621 :

// C2621.cpp
class A {
   A( const A& );   // A has a copy constructor
};
union U {
   A a;   // C2621
};

L'erreur C2621 peut également être générée pour du code compilé dans Visual C++ 6.0, mais qui ne compile plus. La bibliothèque C++ standard de Visual C++ 6.0 n'utilisait pas d'union de ses paramètres de modèle. Les types de classes possédant un constructeur de copie ne peuvent pas être un paramètre de modèle pour basic_string.

L'exemple suivant génère l'erreur C2621 :

// C2621b.cpp
// compile with: /EHsc
#include <vector>
#include <string>
using namespace std;
typedef vector<int> mytype;

int main() {
   basic_string < mytype > b;   // C2621 class type (vector) with
                               //  copy constructor as template param
   basic_string < char > c;   // OK
}
Afficher: