Kopierconstuctor bei list



  • Hallo

    Mein Test Code

    CModel super(CModel tmp)
    {
      return tmp;
    }
    ...
    CModel mdll("../debug/dataff.dat"); 
    CModel test;
    test=super(mdll);
    cout << "Search Parm: L2 " << test.getValue("L") << endl;
    
    /**
    

    Ausgabe :Parameter L ist nicht in der Liste ist. Wenn ich aber
    test=mdll mach funktioniert es richtig.

    CModel mdll("../debug/dataff.dat"); 
    CModel test;
    test=mdll;
    cout << "Search Parm: L2 " << test.getValue("L") << endl;
    

    So bekomme ich die richtige Ausgabe.

    Der Kopierkonstruktor

    CModel::CModel(const CModel &cm)
    {	
    	cparmlist=cm.cparmlist;
    }
    

    cparmlist ist vom Typ

    CParametersList cparmlist;
    

    Der Zuweisungsoperator und Kopierkonstruktor

    CParametersList::CParametersList(const CParametersList &cparm)
    {
    	this->parmlist = cparm.parmlist;
    }
    CParametersList &CParametersList::operator=(const CParametersList &cparm)
    {
    	 if (this == &cparm)
                return *this;
    	 else
    	 {
    		parmlist = cparm.parmlist;
    		return *this;
    	 }
    
    }
    

    Parmlist ist vom Typ

    private:
    	list<Parameters*> parmlist;  
    
    	list<Parameters*>::iterator itr_parmlist;
    

    Ich denke der fehler wird von Zuweisungsoprator in CParametersList verursacht. Bin mir aber nicht sicher.

    danke für die Hilfe.



  • Nach einer weile bin ich drauf gekommen.
    Ich hab die ganze Zeit Zeiger durch die gegen Kopiert. Nachdem löschen der Objecte auf die, die Zeiger zeigten gab es immernoch Zeiger die ins leere gezeigt haben.


Anmelden zum Antworten