Неправильно сработал перегруз оператора

Я перегрузил оператор инкремента специально для класса, но при постфиксном инкременте компилятор показывает только первый 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++);
}
→ Ссылка