Cotul Skrevet 13. februar 2007 Skrevet 13. februar 2007 Hallo. Som tittelen sier så har jeg et lite problem med overlasting av en '=' operator. kuleFarge[antallKuler] = new point3(r, g, b); // her det blir problemet // r,g,b er da float verdier. class point3{ public: float x,y,z; point3(); point3(float xx,float yy, float zz); point3(point3 p1, point3 p2); point3 operator +(const point3 & p)const; vec3 operator -(const point3 & p) const; point3 operator *(const point3 & p)const; //point3 operator *()const; point3 operator /(const point3 & p)const; void operator =(point3 & p); }; void point3::operator =(point3 &p){ x = p.x; y = p.y; z = p.z; //return point3(p.x, p.y , p.z); } Fult mulig jeg har andre feil, men denne oppstår 5 ganger. hvert gang point3 = point3 blir brukt. Kompilerings feilen jeg får: .\Grafikk.cpp(250) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'point3 *' (or there is no acceptable conversion) c:\cpp\oblig2\Matteverktøy.h(157): could be 'void point3::operator =(point3 &)' while trying to match the argument list '(point3, point3 *)' Oppgaven skulle leveres i går så setter pris på raske svar.
einaros Skrevet 13. februar 2007 Skrevet 13. februar 2007 (endret) class point3{ public: float x,y,z; point3(); point3(float xx,float yy, float zz); point3(point3 p1, point3 p2); const point3& operator +(const point3& p)const; const vec3& operator -(const point3& p) const; const point3& operator *(const point3& p)const; //point3& operator *()const; const point3& operator /(const point3& p)const; point3& operator =(const point3& p); }; point3& point3::operator =(const point3& p){ x = p.x; y = p.y; z = p.z; } point3 p = point3(1.1, 2.2, 3.3); Dropp "new" foran point3 i tilegnelsen, ellers vil applikasjonen din lekke minne (allokere nytt point3 som kun brukes til operator= har kjørt ferdig -- men aldri slette det). Hvis du skal ha en operator= som faktisk lar deg assigne fra et nylig allokert objekt (selv om det ikke er det du *virkelig* vil i denne sammenhengen), må den ta en peker til point3 som parameter, ikke en referanse. Endret 13. februar 2007 av einaros
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå