Probleme mit selbstdefiniertem Plus

Rene42

Erfahrenes Mitglied
Hi Leute,

ich habe mir eine Klasse V3D geschrieben, die 3D Vektoren verwalten können soll.
Soweit so gut. Die Klasse hat drei Variabeln x, y, z für die Komponenten. Dann habe ich mit folgendem Code versucht die Addtion zu definieren:

PHP:
 //Addition von Vektoren
 V3D V3D::operator+(V3D A)
          {
                 x = x + A.x;
                 y = y + A.y;
                 z = z + A.z;
                 
                 return this;
          }


Aufgerufen und probiert wird mit:
PHP:
#include <cstdlib>
#include <iostream>
#include "Vektor3D.h"

using namespace std;

V3D V(2,4,6), W(3,5,7); //Dies konstruiert einfach zwei Vektoren
float a,b,c;

int main(int argc, char *argv[])
{
    
    V3D S = V + W;
    cout << S.Prin();
    system("PAUSE");
    return EXIT_SUCCESS;
}

Die Funktione Prin ist Extra definiert und gibt mir später einfach einen Vektor auf der Konsole aus.
Die Fehlermeldung lautet:
C:\Dev-Cpp\Simulation\Vektor3D.h In member function `V3D V3D::operator+(V3D)':
C:\Dev-Cpp\Simulation\Vektor3D.h invalid conversion from `V3D* const' to `int'
C:\Dev-Cpp\Simulation\Vektor3D.h initializing argument 1 of `V3D::V3D(int)'

Ich kann an keiner Stelle erkennen, dass ein Konvertierung in int vorgenommen werden müsste. Hoffe einer kann sehen was hier schiefgeht.

Rene42
 
Hi.
Besten dank, dort lag der Fehler begraben.
Dein Operator ist aber etwas seltsam definiert, du änderst ja das Objekt. Das sollte eigentlich nicht so sein und du kopierst das zweite Argument unnötig beim Funktionsaufruf:
C++:
V3D V3D::operator+(const V3D& A) const
{
     return V3D(x + A.x, y + A.y, z + A.z);
}
Gruß
 
Zurück