Forum huvudsida -> Programmering -> C++, plus/minus fel?
Sidor: 1
olle | 20:00 - 2:a Augusti 2006 | Post #1 | |
Medlem Inlägg: 57 Skicka PM |
Har gjort en klass som ska fungera på detta sätt: FancySequenceGenerator g() // starta på 0, inkrement 1 FancySequenceGenerator g(2) // starta på 2, inkrement 1 FancySequenceGenerator g(5, -3) // starta på 5, inkrement -3 Detta ska man sedan anropa genom att använda funktionsobjekt.
Vid tex generate(v,10,FancySequenceGenerator(2)); så blir utskriften: [3,4,5,6,7,8,9,10,11,12] och generate(v,10,FancySequenceGenerator(2, -1)); [1,0,-1,-2,-3,-4,-5,-6,-7,-8] Så jag har plus/minus fel. Det jag vill är att resultatet ska adderas efter att man har gjort return så att man får resultatet nästa gång man anropar operator(). tex som "current++". Tänkte kanske det finns någon liknande syntax i mitt fall? ps: vill slippa if satser etc.. om det är möjligt ------------------------- Ingen signatur! |
Nissebosselasse | 21:20 - 2:a Augusti 2006 | Post #2 | |
Medlem Inlägg: 490 Skicka PM |
Jag förstår inte riktigt vad du menar. Vill du att utskriften från: generate(v,10,FancySequenceGenerator(2)); så blir utskriften: [3,4,5,6,7,8,9,10,11,12] ...istället ska bli: [2,3,4,5,6,7,8,9,10,11] ? I så fall är det inte svårare än att i klassens konstruktör(er) minska startvärdet (current) med stegvärdet (ink). ------------------------- http://pushingcows.se Gula Nallen Senast redigerad 21:29 - 2:a Augusti 2006 |
olle | 22:03 - 2:a Augusti 2006 | Post #3 | |
Medlem Inlägg: 57 Skicka PM |
Exakt detta ville jag åstakomma. Inte visste jag att de skulle vara så lätt. Tack för hjälpen. ------------------------- Ingen signatur! |
Lajnold | 03:15 - 11:a Augusti 2006 | Post #4 | |
Medlem Inlägg: 65 Skicka PM |
Bättre tycker jag är att ändra int operator() (), eftersom det inte är värdet i klassen som är fel, utan det returnerade värdet (eftersom du värdet just innan du returnerar det). Att ändra på värdet konstruktorn då gör att om du någon gång skulle lägga till någon funktion som använder current så skulle det bli fel. ,,ven om det inte kommer att göras något sådant i det här fallet, så kan det vara bra att lära sig "rätt". Nu menar jag egentligen inte att Nissebosselasses lösning är "fel", men jag ser det mer som ett fulhack. Jag skulle ha gjort int operator() () något sådant här istället. int operator() () { int ret = current; current += ink; return ret; } ------------------------- Ingen signatur! |
Sidor: 1
Forum huvudsida -> Programmering -> C++, plus/minus fel?
Du får inte posta i den här tråden | Till toppen
Datum
2024-04-24 07:24
Vecka: 17
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.