vecteur d'objet avec attributs constants => problème d'opérateur
Bonjour !
Je ne comprends pas l'erreur que me fait mon compilateur sur ce code simplifié:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
#include "stdafx.h"
#include <iostream>
#include <vector>
class A
{
public:
const int x;
A(int ival) :x(ival){};
//const A& operator =(const A & a){return a;};
};
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<A> levector;
A a(5);
levector.push_back(a);//C2582
A obja = a;
return 0;
} |
L'erreur à la compilation avec visual studio étant:
Code:
1 2
|
Erreur 1 error C2582: 'operator =' fonction non disponible dans 'A' c:\program files\microsoft visual studio 8\vc\include\xutility 2726 |
Si on enlève les // devant const A& operator =(const A & a){return a;};
il n'y a plus d'erreur.
Donc le problème m'échappe, je ne vois pas en quoi j'ai besoin de redéfinir l'opérateur =, qui est normalement défini par défaut.
Sachant que le problème est aussi lié au fait que x soit constant. Si x n'est plus constant, alors je n'ai plus d'erreur.
merci de votre aide