Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
pewnie trzeba jakiś operator przypisania przeciążyć w którym będą zamieniane te wartości
edit
wyguglałem coś takiego
Kod:
#include <iostream>
#include <vector>
using namespace std;
class klasa{
public:
static unsigned int total;
int ilosc;
klasa(int n) : ilosc(n) { total += ilosc; };
klasa(const klasa &drugi) { total += drugi.ilosc; this->ilosc = drugi.ilosc; };
~klasa() { total -= ilosc; };
klasa& operator=(klasa &other)
{
std::swap(ilosc, other.ilosc);
return *this;
}
};
unsigned int klasa::total = 0;
int main()
{
vector<klasa> vec;
int suma = 0;
for (int i = 100; i <= 500; i += 100)
{
suma += i;
klasa temp(i);
vec.push_back(temp);
}
cout << "Suma wrzuconych elementow: " << suma << " Rozmiar vectora: " << vec.size() << endl;
vec.erase(vec.begin(), vec.begin() + 2);
cout << "vec.size() = " << vec.size() << endl;
cout << "klasa::total = " << klasa::total << endl;
return 0;
}
vec.erase(vec.begin(), vec.begin() + 2);
a po tej linijce miała 600 bo zostały wywołane inne destruktory.
po dodaniu przeciążenia operatora masz 1200
o to Ci chodziło?
@joozioom ;
Zakładki