eigene Klasse Vektor fehlerhaft
-
Hallo zusammen,
kann mir jemand plausibel erklären, warum meine Klasse Vektor nicht richtig funktioniert:
class Vektor{ public: string name; int rows; double * values; Vektor(int rows); ~Vektor(); double& operator[] (int row); }; Vektor::Vektor(int rows){ this->rows=rows; this->values=new double[rows]; } Vektor::~Vektor(){ delete [] values; } double& Vektor::operator[] (int row){ if(row<0 || row > this->rows) exit(1); else return this->values[row]; } int main(){ Vektor *v = new Vektor(5); v[0]=3; cout << v[0]; return 0; }Beim Compilieren bekomme ich den Fehler:
error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class Vektor'
v[0] ist doch ein double... oder hab ich was übersehen?Danke euch
-
v ist kein vector, sondern ein vector* - und v[0] nutzt noch nicht deinen op[], sondern die eingebaute Zeiger-Arithmetik von C++.
(die Anweisung v[0]=3; legt übrigens einen neuen Vector mit 3 Elementen an und kopiert den mit dem default-generierten Zuweisungsoperator ;))
-
int main(){ Vektor v(5); v[0]=3; cout << v[0]; return 0; }
-
int main(){ Vektor *v = new Vektor(5); v->operator [](0)=3; cout << v->operator [](0); return 0; }