Daten einlesen in Array von Objekten
-
Hallo zusammen,
ich komme einfach direkt zu meinem Problem.
Ich muss ein Programm schreiben, in dem Daten aus Dateien in ein Array von Objekten eingelesen wird. Um die Bearbeitung kümmere ich mich später
Die Fehlermeldung
:g++ -O0 -g3 -Wall -c -fmessage-length=0 -oDatensatz.o ..\Datensatz.cpp ..\Datensatz.cpp: In constructor `Datensatz::Datensatz(std::string, int)': ..\Datensatz.cpp:23: error: no match for 'operator=' in '*(((Datensatz*)this)->Datensatz::kurveeingang + (+(((unsigned int)((Datensatz*)this)->Datensatz::j) * 40u))) = (((Eingangsdaten*)operator new(40u)), (<anonymous>->Eingangsdaten::Eingangsdaten(((Datensatz*)this)->Datensatz::a, ((Datensatz*)this)->Datensatz::b, ((Datensatz*)this)->Datensatz::c, ((Datensatz*)this)->Datensatz::d, ((Datensatz*)this)->Datensatz::e), <anonymous>))' ..\Eingangsdaten.h:11: note: candidates are: Eingangsdaten& Eingangsdaten::operator=(const Eingangsdaten&) Build error occurred, build is stopped Time consumed: 547 ms.die Dateien:
/* * Eingangsdaten.h * * Created on: 29.04.2010 * Author: Student2 */ using namespace std; #ifndef EINGANGSDATEN_H_ #define EINGANGSDATEN_H_ class Eingangsdaten { public: Eingangsdaten (); //virtual ~Eingangsdaten(); Eingangsdaten (double, double, double, double, double); void Eingangsdaten1 (double, double, double, double, double); double getB (); double getkoeff1 (); double getkoeff2 (); double getkoeff3 (); double getkoeff4 (); private: double b; double koeff1, koeff2, koeff3, koeff4; }; #endif /* EINGANGSDATEN_H_ */ _________________________________________ /* * Eingangsdaten.cpp * * Created on: 29.04.2010 * Author: Student2 */ #include <iostream> #include "Eingangsdaten.h" Eingangsdaten::Eingangsdaten (){} /*inline void Eingangsdaten::Eingangsdaten1(double tb, double tkoeff1, double tkoeff2, double tkoeff3, double tkoeff4){ cout << "test"; b=tb; koeff1=tkoeff1; koeff2=tkoeff2; koeff3=tkoeff3; koeff4=tkoeff4; }*/ Eingangsdaten::Eingangsdaten(double tb, double tkoeff1, double tkoeff2, double tkoeff3, double tkoeff4){ cout << "test"; b=tb; koeff1=tkoeff1; koeff2=tkoeff2; koeff3=tkoeff3; koeff4=tkoeff4; } inline double Eingangsdaten::getB (){return b;} inline double Eingangsdaten::getkoeff1 (){return koeff1;} inline double Eingangsdaten::getkoeff2 (){return koeff2;} inline double Eingangsdaten::getkoeff3 (){return koeff3;} inline double Eingangsdaten::getkoeff4 (){return koeff4;} //Eingangsdaten::~Eingangsdaten() { // TODO Auto-generated destructor stub //} _____________________________________ /* * Datensatz.h * * Created on: 06.05.2010 * Author: Student2 */ #include <iostream> #include <string> #include "Eingangsdaten.h" using namespace std; #ifndef DATENSATZ_H_ #define DATENSATZ_H_ class Datensatz { public: Datensatz(string,int); virtual ~Datensatz(); Eingangsdaten *kurveeingang; private: unsigned int i; string zeile; string splittarray[]; int j; double a,b,c,d,e; }; #endif /* DATENSATZ_H_ */ ___________________________________ /* * Datensatz.cpp * * Created on: 06.05.2010 * Author: Student2 */ #include "Datensatz.h" #include <fstream> #include <sstream> Datensatz::Datensatz (string dateiname,int zeilen){ cout << "testD"; kurveeingang= new Eingangsdaten[zeilen]; j=0; ifstream datei (dateiname.c_str()); while (getline(datei, zeile,'\n'));{ //Zeile einlesen while((i = zeile.find(','))!=string::npos)zeile[i] = '.'; //Komma durch Punkt ersetzen istringstream ist(zeile); ist >> a; ist >> b; ist >> c; ist >> d; ist >> e; kurveeingang[j] = new Eingangsdaten (a, b, c, d, e); j++; } } Datensatz::~Datensatz() { // TODO Auto-generated destructor stub } _________________________________ /* * Berechnung.h * * Created on: 12.05.2010 * Author: Student2 */ using namespace std; #include <iostream> #ifndef BERECHNUNG_H_ #define BERECHNUNG_H_ #include "Datensatz.h" //#include "Eingangsdaten.h" class Berechnung { public: //Berechnung(); //virtual ~Berechnung(); Datensatz ds1,ds2,ds3; int main (void); }; #endif /* BERECHNUNG_H_ */ ___________________________________________ /* * Berechnung.cpp * * Created on: 12.05.2010 * Author: Student2 */ #include "Berechnung.h" int main (void){ Datensatz *ds1 =new Datensatz("./txt/kurve1eingang.txt",17); Datensatz *ds2 =new Datensatz("./txt/kurve2eingang.txt",17); Datensatz *ds3 =new Datensatz("./txt/kurve3eingang.txt",17); cout << "testE"; //System.out.println (ds3.kurveeingang[12].getkoeff3()); return 0; } /*Berechnung::Berechnung() { // TODO Auto-generated constructor stub } Berechnung::~Berechnung() { // TODO Auto-generated destructor stub } */ich hoffe, dass jemand die Zeit findet mir zu helfen.
cih bin auch dankbar für Tipps anderer Art, sei es wie ich besser poste oder wie das angegebene Problem auf andere (bessere, einfachere) Art zu lösen istGruss
-
Datensatz::Datensatz (string dateiname,int zeilen){ cout << "testD"; kurveeingang= new Eingangsdaten[zeilen]; j=0; ifstream datei (dateiname.c_str()); while (getline(datei, zeile,'\n'));{ //Zeile einlesen while((i = zeile.find(','))!=string::npos)zeile[i] = '.'; //Komma durch Punkt ersetzen istringstream ist(zeile); ist >> a; ist >> b; ist >> c; ist >> d; ist >> e; kurveeingang[j] = new Eingangsdaten (a, b, c, d, e); //new liefert Eingangsdaten*, kurveeingang[j] ist jedoch vom Typ Eingangsdaten. j++; } }