Returnera temporärt "delobjekt" (C++)
Säg att jag har en klass A som håller koll på n antal listor.
Denna klass har ett antal medlemsfunktioner op1(), op2(), ... etc, som vardera utför en specifik operation på ALLA listor.
Säg nu att jag skulle vilja utföra en operation på bara EN lista. En lösning skulle såklart vara att lägga till ett argument till alla funktioner som anger vilken lista jag vill operera på. Men jag undrar om det inte går att göra på ett smidigare och snyggare sätt?
Tanken om syntax och funktion jag har är följande, om jag vill operera på alla listor utför jag:
Aobj.op1( ... );
Men om jag bara vill utföra operationen på en lista (säg 3:e i ordningen) vill jag kunna skriva exempelvis:
Aobj[2].op1( ... );
eller något i den stilen.
Dessa listor är inte nödvändigtvis en simpel array, utan kan vara vadsomhelst.
Iden som jag lekt med är att med operator[] returnera en referens till en temporär instans av typen A, där den temporära instansen innehåller relevanta pekare och dimensionsvariabler till den delmängd av datan jag vill operera på. Den temporära instansen lagras som en medlemsvariabel i objektet själv som en pekare. Det fungerar, men är inte så snyggt, genererar en hel del "bookkeeping", och är inte trådsäkert (men behöver inte heller vara i nuläget).
Någon som har kännedom om något effektivt (dvs ingen deep copy) och beprövat sätt att göra detta? Eller någon länk till relevant läsning?