Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
Kod:
#include <iostream>
#include <vector>
using namespace std;
class klasa{
public:
static unsigned int total;
int ilosc;
klasa(int n) : ilosc(n) { total += ilosc; cout << "total wynosi: " << total << endl; };
klasa(const klasa &drugi) { total += drugi.ilosc; this->ilosc = drugi.ilosc; };
~klasa() { total -= ilosc; cout << "total wynosi: " << total << endl; };
};
unsigned int klasa::total = 0;
int main(){
vector<klasa> vec;
int q, n;
while(q != 0)
{
cout << "1. Dodaj.\n";
cout << "2. Usun.\n";
cout << "3. Wyswietl.\n";
cout << "0. Wyjdz.\n";
cin >> q;
switch(q){
case 1:
{
cout << "Dodaj: " << endl;
cin >> n;
klasa proc(n);
vec.push_back(proc);
break;
}
case 2:
cout << "Usun: " << endl;
cin >> n;
vec.erase(vec.begin()+n);
break;
case 3:
for(int i = 0; i < vec.size(); i++) cout << vec[i].ilosc << endl;
break;
}
}
return 0;
}
Mam static int w klasie, który sobie zlicza zmienną 'ilosc' w klasie - zwiekszam i zmniejsza ja w konstruktorze i destruktorze. Ale kiedy utworze na przyklad 4 nastepujace obiekty kolejno: 100, 10, 10, 10, i wrzuce je do vectora, a następnie usune z niego pierwszy obiekt (ten z wartoscia 100) to total zmniejsza sie o 10, a nie o 100. Obiekt z wartoscia 100 owszem znika, ale total zmniejsza sie o ostatnio dodana wartosc, a nie o wartosc usuwanego obiektu. Why?
Zakładki