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; 
    }
    

Anmelden zum Antworten