Toon posts:

[C++] Operator Overloading

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben aan het stoeien met operator overloading. Ik zit nu nog met 1 probleempje ...
code:
1
2
3
4
5
Counter c1(10);
Counter c2;

c1++;   /* Werkt perfect */
c2 = c1++; /* Not an allowed type in function main() */

Wat doe ik verkeerd :?

code:
Counter.h
Counter.cpp

  • Bananeman
  • Registratie: Juli 2000
  • Niet online
Je operators geven nu void terug, en dat gaat natuurlijk niet goed bij een assignment (c2 = c1++).

Oplossing: je ++ operators moeten een returnwaarde van het type Counter krijgen. Houd trouwens wel rekening met pre- en postfix: bij prefix moet je het object ná de increment teruggeven, bij postfix vóór de increment.

[edit] Kijk anders ook eens hier (random document gevonden met google): http://www.borland.com/borlandcpp/news/cobb/bcj1_3d.html

Motor-forum.nl


Verwijderd

Op dinsdag 29 januari 2002 22:13 schreef Bananeman2002 het volgende:
Oplossing: je ++ operators moeten een returnwaarde van het type Counter krijgen.
Of Counter& natuurlijk. :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

ik geloof dat de correcte syntax const Counter & is

maw, dit zou niet mogen
code:
1
(a++) = b;

je moet natuurlijk helemaal zelf weten wat je teruggeeft, maar standaard is dus const T & (T stelt hier de klasse voor die je overload :))

.edit: wat kom ik nou weer voor bullshit-post van mezelf tegen? Hij kan helemaal geen const Counter & teruggeven, aangezien er een kopie gemaakt moet worden, omdat het een postfix increment betreft. Het moet dus gewoon Counter zijn

Niet dat iemand dit ooit nog leest, maar nu kunnen mensen iig niet meer zeggen dat ik onwaarheden die niet zijn opgemerkt onverbeterd laat :P

[ Voor 44% gewijzigd door .oisyn op 14-03-2003 16:13 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Bananeman
  • Registratie: Juli 2000
  • Niet online
Op woensdag 30 januari 2002 00:33 schreef Sneech het volgende:

[..]

Of Counter& natuurlijk. :)
Absoluut, maar dat kan alleen bij prefix, niet bij postfix omdat je dan een kopie van je object moet aanmaken op de stack. Maar goed, daarom gaf ik hem ook die link waarin het e.e.a. wordt uitgelegd.

Motor-forum.nl