<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Klasse get und set Funktionen falsch kodiert?]]></title><description><![CDATA[<p>Also hier ist ein Teil meiner Klasse Signal</p>
<pre><code>class Signal
{
  private:	 
	  vector&lt;double&gt;  _Data;
....

  public:
          vector&lt;double&gt; Data(void)const {return(this-&gt;_Data);}
          void SetData(  vector&lt;double&gt; data){this-&gt;_Data=data;}

};
</code></pre>
<p>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</p>
<p>Mein Code gibt kein Fehler aber beim Starten das Programm stürzt ab.<br />
ALSO ich bin mir sicher , dass ich einen Anfänger Fehler gemacht habe..beim Kodieren von get und set Funktionen für _Data</p>
<pre><code>#include &lt;algorithm&gt;
#include &lt;iterator&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;fstream&gt; 
#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &quot;signal.h&quot;

using namespace std;

inline double stof(const string&amp; in)
{ return atof(in.c_str()); } 
int main() {	

       vector&lt;Signal&gt; VecSig;
	vector&lt;double&gt; x;
	vector&lt;string&gt; s;
	vector&lt;int&gt; idx_channel;
	string line;
	std::ifstream infile( &quot;signale_kurz.txt&quot; );
	//lese die Strings
 std::copy(istream_iterator&lt;string&gt;(infile),istream_iterator&lt;string&gt;(),back_inserter(s));
	for(int i=0;i&lt;(int)s.size();++i)
	{
		if((s[i].find(&quot;CHANNEL&quot;)!=string::npos))//Wo fängt das neue Channel an??
		{
			idx_channel.push_back(i);			
		}
	}
	for(int i=0;i&lt;(int)idx_channel.size();++i)
	{
		if(i&lt;(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&lt;double&gt;::iterator it=x.begin();it!=x.end();++it) cout&lt;&lt;*it&lt;&lt;endl;	
}
</code></pre>
<p>WIe programmiere ich das richtig????</p>
<p>Danke Carmen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/141232/klasse-get-und-set-funktionen-falsch-kodiert</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 10:00:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/141232.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Mar 2006 12:44:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse get und set Funktionen falsch kodiert? on Mon, 20 Mar 2006 12:44:47 GMT]]></title><description><![CDATA[<p>Also hier ist ein Teil meiner Klasse Signal</p>
<pre><code>class Signal
{
  private:	 
	  vector&lt;double&gt;  _Data;
....

  public:
          vector&lt;double&gt; Data(void)const {return(this-&gt;_Data);}
          void SetData(  vector&lt;double&gt; data){this-&gt;_Data=data;}

};
</code></pre>
<p>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</p>
<p>Mein Code gibt kein Fehler aber beim Starten das Programm stürzt ab.<br />
ALSO ich bin mir sicher , dass ich einen Anfänger Fehler gemacht habe..beim Kodieren von get und set Funktionen für _Data</p>
<pre><code>#include &lt;algorithm&gt;
#include &lt;iterator&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;fstream&gt; 
#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &quot;signal.h&quot;

using namespace std;

inline double stof(const string&amp; in)
{ return atof(in.c_str()); } 
int main() {	

       vector&lt;Signal&gt; VecSig;
	vector&lt;double&gt; x;
	vector&lt;string&gt; s;
	vector&lt;int&gt; idx_channel;
	string line;
	std::ifstream infile( &quot;signale_kurz.txt&quot; );
	//lese die Strings
 std::copy(istream_iterator&lt;string&gt;(infile),istream_iterator&lt;string&gt;(),back_inserter(s));
	for(int i=0;i&lt;(int)s.size();++i)
	{
		if((s[i].find(&quot;CHANNEL&quot;)!=string::npos))//Wo fängt das neue Channel an??
		{
			idx_channel.push_back(i);			
		}
	}
	for(int i=0;i&lt;(int)idx_channel.size();++i)
	{
		if(i&lt;(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&lt;double&gt;::iterator it=x.begin();it!=x.end();++it) cout&lt;&lt;*it&lt;&lt;endl;	
}
</code></pre>
<p>WIe programmiere ich das richtig????</p>
<p>Danke Carmen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1020234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020234</guid><dc:creator><![CDATA[carmen]]></dc:creator><pubDate>Mon, 20 Mar 2006 12:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse get und set Funktionen falsch kodiert? on Mon, 20 Mar 2006 14:20:39 GMT]]></title><description><![CDATA[<p>Am Ende von main war:</p>
<pre><code>VecSig[i].SetData(x);
x.clear();
</code></pre>
<p>aber VecSig ist am Anfang leer... mit push_back wird erst mit Leben gefüllt.</p>
<p>so ist es richtig:</p>
<pre><code>Signal S;
S.SetData(x);
x.clear();
VecSig.push_back(S);
</code></pre>
<p>Carmen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1020328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020328</guid><dc:creator><![CDATA[carmen]]></dc:creator><pubDate>Mon, 20 Mar 2006 14:20:39 GMT</pubDate></item></channel></rss>