Avatar billede tax Nybegynder
08. januar 2002 - 17:28 Der er 7 kommentarer og
1 løsning

operator overloading

Jeg sidder og er ved at rive håret ud af hovedet fordi at jeg er ved at lave en avanceret ringbuffer jeg ikke helt kan overskue konsekvenserne af. Det er noget med to hjul, der skal rotere.

For at gøre dette lettere at forstå (og kode), ville jeg lave et ringbufferindex som en klasse, så jeg ikke heletiden skal checkke for overrun/underrun når jeg bruger den. Men hvordan hulen er det nu at man indikerer at en klasse er sammenlignelig med en integer.

Jeg havde forestillet mig noget i stil med

class wheel()
{


}
Avatar billede tax Nybegynder
08. januar 2002 - 17:31 #1
Fejl.. Jeg fortsætter her

class wheel()
{
public:
int index, size;
wheel(int s)
{
size=s;
}

int wheel operator++()
{
index++;
if index > size
index=0;
}

//det samme for --

}



hvilken regel skal jeg opskrive for at følgende bliver tilladt:

wheel a(3);
a++;
a--;
mitArray[a]=nyVærdi;  <----PROBLEM???
Avatar billede chries Nybegynder
09. januar 2002 - 08:18 #2
hvis det er wheel = int, skal implementere operator= for en int i din wheel-klasse
hvis det er wheel = wheel, skal implementere operator= for wheel i din wheel-klasse




Avatar billede chries Nybegynder
09. januar 2002 - 08:20 #3
operator= for wheel = wheel er ikke altid nødvendigt. Kommer an på hvad du har af data i din klasse (f.eks pointer og sådan noget)
Avatar billede tax Nybegynder
09. januar 2002 - 08:51 #4
Den indeholder en integer. Wheel-klassen skal bare beskytte den fra at \"løbe over/under\". -skal bruges i en ringbufferapplikation.
Avatar billede tax Nybegynder
09. januar 2002 - 08:52 #5
Flere steder på nettet advares imod at bruge

int operator =
{

}

Hvordan anvendes den rigtigt?
Avatar billede chries Nybegynder
09. januar 2002 - 09:52 #6
tilføj

public:
wheel &operator=( int & newValue ); 


wheel &operator=( int & newValue ); 
{
  index = newValue; // eller hvilken værdi der skal opdateres
  return *this;
}
Avatar billede chries Nybegynder
09. januar 2002 - 09:53 #7
Tænker grunden til de advarer, er fordi den er svært at gennemskue når man læser kode.

whell = int, bøh :-)
Avatar billede chries Nybegynder
10. januar 2002 - 12:05 #8
Du må gerne lukke spørgsmålet, hvis det var svar nok :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester