Przeładowanie operatora ++/-- (post)

0

Witam. Czy możliwe jest w jakiś prosty sposób przeładowanie operatora ++/-- (post), aby zachowywał się tak jak np. dla typu wbudowanego int. Tzn.

int x = 3;
std::cout << x++; //wyświetli 3 i dopiero potem zwiększy x o 1

Natomiast przy takim programiku działa mi to inaczej:

class Klasa {
private:
   int mSkladnik;
public:
   Klasa() : mSkladnik(3) {
   }
   Klasa& operator++(int) {
      mSkladnik++;
      return *this;
   }
   friend std::ostream& operator<<(std::ostream& ekr, Klasa kl);
};
std::ostream& operator<<(std::ostream& ekr, Klasa kl) {
   ekr << kl.mSkladnik;
   return ekr;
}
int main() {
   Klasa obj;
   std::cout << obj++; //no i tutaj zamiast 3 wyswietla mi 4;
   return 0;
}

Co można z takim fantem zrobić?

1

Bo źle implementujes operator postinkrementacji:

    X operator++(int) {
        X tmp(*this); // copy
        operator++(); // pre-increment
        return tmp;   // return old value
    }
2
class Klasa
  {
   private:
   int mSkladnik;
   public:
   Klasa(int mSkladnik=3):mSkladnik(mSkladnik) {}
   Klasa operator++() { ++mSkladnik; return *this; } // ++obj;
   Klasa operator++(int) { Klasa cpy(*this); ++mSkladnik; return cpy; } // obj++;
  };

Stąd moja odwieczna walka z ignorantami: http://4programmers.net/Forum/1101404

0

Dziękuję, za szybkie odpowiedzi. ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1