eigenen Operator erstellen

Rene42

Erfahrenes Mitglied
Hi Leute,

ich möchte den Operator + für Vektoren definieren.

So sieht die Vektorklasse aus

PHP:
class Vektor_3D
          {
           public:
                       float x,y,z;
        
           //Einen neuen Vektor erzeugen (nach Vorgabe)
           Vektor_3D(const float vx, const float vy, const float vz) : x(vx), y(vy), z(vz) {}
          };

Nun versuche ich folgendermassen den Operator "+" zu definieren

PHP:
//Addition zweier Vektoren
       inline Vektor_3D operator + (const Vektor_3D a, const Vektor_3D b)
              {
               return Vektor_3D(a.x+b.x,a.y+b.y,a.z+b.z);
              }

Dann spuckt der Compiler folgenden Fehler aus:
`Vektor_3D Vektor_3D::operator+(Vektor_3D, Vektor_3D)' must take either zero or one argument

Gruß Rene
 
Zuletzt bearbeitet:
Hallo bei mir funktioniert es. Getestet mit CodeBlocks und MinGW.
C++:
#include <iostream>

class Vektor_3D
{
  public:
    float x,y,z;

    //Einen neuen Vektor erzeugen (nach Vorgabe)
    Vektor_3D(const float vx, const float vy, const float vz)
    : x(vx), y(vy), z(vz)
    {}
};

//Addition zweier Vektoren
inline Vektor_3D operator + (const Vektor_3D& a, const Vektor_3D& b)
{
    return Vektor_3D(a.x+b.x,a.y+b.y,a.z+b.z);
}

int main(int argc, char* argv[])
{
    Vektor_3D foo(30.0, 20.5, -6.8);
    Vektor_3D bar(-20.3, 4.1, -2.9);
    Vektor_3D foobar = foo + bar;

    return 0;
}

Du kannst den Operator auch in der Klasse definieren mit nur einem Parameter um dann eine Addition mit dem aktuellen Vektor und dem übergegebenen Vektor durchzuführen.

mfg
 
Tjo das was in deinem Kommentar steht hat er gemacht (nur halt vergessen einen Parameter zu nehmen ... (vgl. "Vektor_3D::") ;)
 
Zurück