Gå til innhold

problemer med '=' operator


Anbefalte innlegg

Skrevet

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 :blush: så setter pris på raske svar.

Videoannonse
Annonse
Skrevet (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 av einaros

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...