Klasse get und set Funktionen falsch kodiert?
-
Also hier ist ein Teil meiner Klasse Signal
class Signal { private: vector<double> _Data; .... public: vector<double> Data(void)const {return(this->_Data);} void SetData( vector<double> data){this->_Data=data;} };Später in main-function möchte ich von einer Datei die Messwerte von mehreren Signale einlesen und mit SetData zu meinem Signal-Objekt zuweisen
Mein Code gibt kein Fehler aber beim Starten das Programm stürzt ab.
ALSO ich bin mir sicher , dass ich einen Anfänger Fehler gemacht habe..beim Kodieren von get und set Funktionen für _Data#include <algorithm> #include <iterator> #include <vector> #include <string> #include <fstream> #include <iostream> #include <stdlib.h> #include "signal.h" using namespace std; inline double stof(const string& in) { return atof(in.c_str()); } int main() { vector<Signal> VecSig; vector<double> x; vector<string> s; vector<int> idx_channel; string line; std::ifstream infile( "signale_kurz.txt" ); //lese die Strings std::copy(istream_iterator<string>(infile),istream_iterator<string>(),back_inserter(s)); for(int i=0;i<(int)s.size();++i) { if((s[i].find("CHANNEL")!=string::npos))//Wo fängt das neue Channel an?? { idx_channel.push_back(i); } } for(int i=0;i<(int)idx_channel.size();++i) { if(i<(int)idx_channel.size()-1) std::transform(s.begin()+idx_channel[i],s.begin()+idx_channel[i+1],back_inserter(x),stof); else std::transform(s.begin()+idx_channel[i],s.end(),back_inserter(x),stof);// der lezte Channel VecSig[i].SetData(x); x.clear(); } x=VecSig[0].Data(); for(vector<double>::iterator it=x.begin();it!=x.end();++it) cout<<*it<<endl; }WIe programmiere ich das richtig????
Danke Carmen
-
Am Ende von main war:
VecSig[i].SetData(x); x.clear();aber VecSig ist am Anfang leer... mit push_back wird erst mit Leben gefüllt.
so ist es richtig:
Signal S; S.SetData(x); x.clear(); VecSig.push_back(S);Carmen