Lokalt objekt i C++

Avdelningen för programmering, nätverk samt alternativa OS.
Post Reply
User avatar
jozo
Posts: 41
Joined: 2005-10-05 15:38:35
Location: uppsala
Contact:

Lokalt objekt i C++

Post by jozo »

JAG BLIR GAALEN!
Jag har suttit och påtat med en operator till en klass mpint. Den ser ut så här:
const mpint &operator-(const mpint &a)
/* Unary negative operator, friend of class mpint. */
{
mpint ans(a);
ans.sign = -ans.sign;
return ans;
}
Problemet är att när jag returnerar ans så slutar objektet att existera och därför blir det fel. Men hur i #/(€=\}! ska jag kunna komma runt problemet snyggt?
HJÄLP!
User avatar
fruktapa
Posts: 121
Joined: 2005-10-26 13:28:17

Post by fruktapa »

returnera en pekare till ans istället ?
- Insha'Allah
Axel
Posts: 88
Joined: 2002-08-18 3:38:47
Location: Sverige
Contact:

Post by Axel »

fast pekaren kommer ju peka på stacken, som med stor sannolikhet kommer att ändras.

Ja vet nu inte exakt vad din mpint klass gör, men är det inte möjligt att få en pekare som parameter? Då är det bara att ändra utan att returnera något?

Om nu detta är helt jättefel kan du väl allokera det du skapar och ret den pekaren. Frågan är hur du gör sen för att frigöra minnet igen?
User avatar
fruktapa
Posts: 121
Joined: 2005-10-26 13:28:17

Post by fruktapa »

Axel wrote: Om nu detta är helt jättefel kan du väl allokera det du skapar och ret den pekaren. Frågan är hur du gör sen för att frigöra minnet igen?
borde väl funka med "malloc" och sedan "free" ?
- Insha'Allah
User avatar
jozo
Posts: 41
Joined: 2005-10-05 15:38:35
Location: uppsala
Contact:

Post by jozo »

NOOOOOOOOO inte c-funktioner i c++...
Ett sätt att lösa problemet är att ta bort &-tecknet innan operator men då kopieras objektet två extra gånger och det kommer då ta längre tid. Temporärt har jag löst problemet så men jag skulle villja ha en genialisk superlösning till problemet. ;)
Post Reply