19. marts 2005 - 20:01
Der er
8 kommentarer og 1 løsning
Operator overload uden for klassen
Hej eksperter Jeg står desværre og mangler ordet for det jeg vil, men jeg håber på at min forklaring gør det forståeligt. Hvis jeg har følgende klasse: class CoorClass { public: CoorClass(int aC) : C(aC) { } CoorClass & operator ++() { C++; return *this; } CoorClass & operator --() { C--; return *this; } bool operator == (const CoorClass &rhs) { return C == rhs.C; } void eks(void); int C; }; void CoorClass::eks(void) { // kode } og ønsker at få flyttet indmaden til funktionen CoorClass & operator --() uden for klassen. Ligesom jeg har gjort med funktionen void eks(void) Jeg har prøvet lidt forskellige gæt men alle resulterer i en fejl.
Annonceindlæg fra DE-CIX
19. marts 2005 - 20:07
#1
Lige ud af landevejen: bool CoorClass::operator==(const CoorClass &rhs)
19. marts 2005 - 20:09
#2
Det er CoorClass & operator --() der driller mig. Bruger jeg: "CoorClass CoorClass:: & operator --()" giver det en fejl
19. marts 2005 - 20:10
#3
Det skal vel være: CoorClass &CoorClass::operator--()
19. marts 2005 - 20:11
#4
Ja det har du ret i. Mange tak for den hurtige hjælp, gider du smide et svar?
19. marts 2005 - 20:16
#5
.
19. marts 2005 - 20:24
#6
Kan se det ikke var helt så simpelt som jeg troede. Hvis jeg nu vil hente den ud fra en klasse i en klasse: class PointClass { public: PointClass(int aX, int aY) : X(aX), Y(aY) {} bool operator == (const PointClass &rhs) { return X == rhs.X && Y == rhs.Y; } bool operator != (const PointClass &rhs) { return !(operator == (rhs)); } class CoorClass { public: CoorClass(int aC) : C(aC) { } CoorClass & operator ++(); CoorClass & operator --() { C--; return *this; } bool operator == (const CoorClass &rhs) { return C == rhs.C; } int C; }; CoorClass X; CoorClass Y; }; Har prøvet med: CoorClass &PointClass::CoorClass::operator ++() { C++; return *this; } CoorClass PointClass::&CoorClass::operator ++() { C++; return *this; }
19. marts 2005 - 20:39
#7
Det nemmeste ville være at hive CoorClass ud af PointClass ... :-) Men jeg prøver lige at undersøge man ellers kan gøre ...
19. marts 2005 - 20:46
#8
Prøv: PointClass::CoorClass &PointClass::CoorClass::operator ++()
19. marts 2005 - 21:02
#9
Den var godt nok styg, men tror jeg har forstået den. Returtypen CoorClass står jo inde i PointClass så derfor er det klart at den ikke bare kan hives ud foran. Mange tak for den ekstra hjælp
Kurser inden for grundlæggende programmering