bonjour,

je ne comprends pas ce qui s passe,
ce code me dit

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
entrez le therme
123
et le deuxième?
5
la somme est:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Abandon
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
nbVec operator+(nbVec a,nbVec b){
	nbVec copie(a);
	copie+=b;
	return copie;
}
 
int main(){
	nbVec exp,exp1,exp2;
	cout<<"entrez le therme"<<endl;
	exp1.saisie();
	cout<<"et le deuxième?"<<endl;
	exp2.saisie();
	cout<<"la somme est:"<<endl;
	exp=exp1+exp2;
	exp.affiche();
	cout<<endl;
	return 0;
}
 
class nbVec{
	private:
		std::vector<int> nb;
	public:
		void saisie();
		void affiche()const;
		char getChifCar(int i);
		int getChifNb(int i);
		int getLong();
		nbVec operator +=(nbVec operande);
};
 
void nbVec::saisie(){
	string nbString;
	int i;
	nbString.clear();
	nb.clear();
	cin>>nbString;
	for(i=nbString.size();i>0;i--)//nb[0] est le chiffre des unités
		nb.push_back(nbString[i-1]-48);
}
 
void nbVec::affiche()const{
	int i;
	string nbString;
	nbString.clear();
	vector<int>vecTemp;
	for(i=nb.size();i>0;i--)
		nbString.push_back(nb[i-1]+48);
	cout<<nbString;
}
 
nbVec nbVec::operator +=(nbVec operande){
	int taille,schif,diff,i,retenue(0),rang;
	nb.clear();
	diff=nb.size()-operande.nb.size();
	if(diff>0)
		for(i=0;i<diff;i++)
			operande.nb.push_back(0);
	else if(diff!=0)
		for(i=0;i<diff;i++)
			nb.push_back(0);
	taille=nb.size();
	for(rang=0;rang<=taille;i++){
		schif=nb[rang]+operande.nb[rang]+retenue;
		if(schif<10){
			nb.push_back(schif);
			retenue=0;
		}
		else{
			nb.push_back(schif-10);
			retenue=1;
		}
	}
	if(retenue==1)
		nb.push_back(1);
	return *this;
}
quelqu'un a une idée?