Неправильно сработал перегруз оператора
Я перегрузил оператор инкремента специально для класса, но при постфиксном инкременте компилятор показывает только первый c1.getCount() после чего выводит:"(процесс 17100) завершил работу с кодом -1073741571."
#include<iostream>
#include<string>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
class Counter
{
private:
int count;
public:
Counter() : count(0)
{}
Counter(int c) : count(c)
{}
int getCount()
{
return count;
}
Counter operator++ ()
{
return Counter(++count);
}
Counter operator++ (int)
{
return operator++ (count++);
}
};
int main()
{
Counter c1;
Counter c2;
cout << c1.getCount() << endl;
++c1;
c2++;
cout << c2.getCount() << endl;
cout << c1.getCount() << endl;
return 0;
}`
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Смотрите, у вас
Counter operator++ (int)
и в нем вы вызываете что?
return operator++(count++);
тот же оператор, которому передается int. Т.е. оператор рекурсивно вызывает сам себя (кстати, компилятор должен был вас об этом предупредить).
Бесконечная рекурсия -> переполнение стека... Вот и всё.
Вероятно (я же не знаю точно ваши намерения...), вы хотели что-то вроде
Counter operator++ (int)
{
return Counter(count++);
}