Problem mit Kopierkonstruktor



  • Ich habe mir einen Kopierkonstruktor geschrieben, aber ich habe einen Fehler entdeckt:

    Storage::Storage(const std::vector<float> &data) {
    	m_iSize = data.size();
    	this->m_vData = new float[data.size()];
    	for(unsigned int i = 0; i < data.size(); i++)
    		m_vData[i] = data[i];
    

    Wenn ich den Kopierkonstruktor jetzt teste, dann kommt im oberen beispiel korrekt: 1,2,3 als ausgabe heraus. Im zweiten jedoch 0,2,3!!! ich weis nicht was ich falsch gemacht habe, dass da so verschiedene ergebnisse kommen.

    std::vector<float> data;
    	data.push_back(1);
    	data.push_back(2);
    	data.push_back(3);
    
    	MATH::Vector v4(data);
    	cout<<v4[0]<<endl;
    	cout<<v4[1]<<endl;
    	cout<<v4[2]<<endl;
    
    	v4 = data;
    	cout<<v4[0]<<endl;
    	cout<<v4[1]<<endl;
    	cout<<v4[2]<<endl;
    

  • Administrator

    1. Das ist kein Kopierkonstruktor, sondern ein normaler Konstruktor.
    2. Wieso heisst die Klasse, von der du uns den Konstruktor zeigst, Storage, während unten die Klasse MATH::Vector genommen wird?
    3. Wie sieht denn der Zuweisungoperator bei dir aus, denn im zweiten Fall wird der Zuweisungoperator benutzt.

    Grüssli


Anmelden zum Antworten