<?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[Instanz an Funktion übergeben]]></title><description><![CDATA[<p>Hallo, ich bin ein ziemlicher Neuling in C++ und hoffe, ihr könnt mir helfen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Mein Problem:<br />
Ich habe eine Klasse Protocol und würde gern eine Instanz dieser Klasse an eine Funktion, die nicht in der Klasse ist, übergeben. Sprich, ich möchte eine außerhalb der Funktion erstellte Instanz in der Funktion nutzen. Wie rufe ich die Funktion dann am besten auf?</p>
<p>Hier meine Instanz mit Funktionsaufruf</p>
<pre><code>Protocol UDP_conn;

grndstion_prtcl_step(/*wie am besten?*/);
</code></pre>
<p>Und die Funktionsdefinition:</p>
<pre><code>void grndstion_prtcl_step(/*wie am besten?*/){

	char first_sig_descr[28] = &quot;Never income message&quot;;
	char second_sig_descr[28] = &quot;The Second funny&quot;;
	static double datas_in = 0;
	int tx_buf_size = 500;
	char tx_buffer[500] = &quot;GET TIME\r\n&quot;;
	char rx_buffer[500];
	int i;
	int UDP_TIMEOUT = 50;

	for(i=0;i&lt;500;i++){
		rx_buffer[i]=0;
		tx_buffer[i]=0;
	}

	datas_in= 35991;
	static float myfloat=297.861;			

	UDP_conn.Signal_do(300,first_sig_descr, 7,&amp;datas_in,PRIO_HIGH,DIR_OUT, DOUBLE); /*Signal_do() ist Funktion der Klasse*/
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/317702/instanz-an-funktion-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 14:20:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317702.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Jun 2013 08:09:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 08:09:36 GMT]]></title><description><![CDATA[<p>Hallo, ich bin ein ziemlicher Neuling in C++ und hoffe, ihr könnt mir helfen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Mein Problem:<br />
Ich habe eine Klasse Protocol und würde gern eine Instanz dieser Klasse an eine Funktion, die nicht in der Klasse ist, übergeben. Sprich, ich möchte eine außerhalb der Funktion erstellte Instanz in der Funktion nutzen. Wie rufe ich die Funktion dann am besten auf?</p>
<p>Hier meine Instanz mit Funktionsaufruf</p>
<pre><code>Protocol UDP_conn;

grndstion_prtcl_step(/*wie am besten?*/);
</code></pre>
<p>Und die Funktionsdefinition:</p>
<pre><code>void grndstion_prtcl_step(/*wie am besten?*/){

	char first_sig_descr[28] = &quot;Never income message&quot;;
	char second_sig_descr[28] = &quot;The Second funny&quot;;
	static double datas_in = 0;
	int tx_buf_size = 500;
	char tx_buffer[500] = &quot;GET TIME\r\n&quot;;
	char rx_buffer[500];
	int i;
	int UDP_TIMEOUT = 50;

	for(i=0;i&lt;500;i++){
		rx_buffer[i]=0;
		tx_buffer[i]=0;
	}

	datas_in= 35991;
	static float myfloat=297.861;			

	UDP_conn.Signal_do(300,first_sig_descr, 7,&amp;datas_in,PRIO_HIGH,DIR_OUT, DOUBLE); /*Signal_do() ist Funktion der Klasse*/
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2332037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332037</guid><dc:creator><![CDATA[K2daL]]></dc:creator><pubDate>Tue, 18 Jun 2013 08:09:36 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 08:11:29 GMT]]></title><description><![CDATA[<p>Reiche die Instanz als Referenz rein. Wenn möglich, auch gleich als const (also wenn Signal_do const ist)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332039</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 18 Jun 2013 08:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 08:12:16 GMT]]></title><description><![CDATA[<p>Genau so wie bei jedem anderen Typ:</p>
<pre><code>void grndstion_prtcl_step(Protocol protocoll);

Protocol UDP_conn;
grndstion_prtcl_step(conn);
</code></pre>
<p>Wobei du wie bei jedem anderen Typ natürlich auch die Möglichkeit einer Referenz oder besonders einer const-Referenz in Betracht ziehen solltest und entscheiden musst, welche dieser drei Möglichkeiten am besten passt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332040</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 Jun 2013 08:12:16 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 08:13:07 GMT]]></title><description><![CDATA[<p>Als Referenz uebergeben, das heisst</p>
<pre><code class="language-cpp">grndstion_prtcl_step(Protocol &amp;udp_conn)
</code></pre>
<p>oder wenn udp_conn in der Funktion nicht verandert wird, dann</p>
<pre><code class="language-cpp">grndstion_prtcl_step(const Protocol &amp;udp_conn)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2332042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332042</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Tue, 18 Jun 2013 08:13:07 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 08:13:33 GMT]]></title><description><![CDATA[<p>K2daL schrieb:</p>
<blockquote>
<p>grndstion_prtcl_step</p>
</blockquote>
<p>Die letzten paar Vokale hättest du aber auch noch weglassen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332044</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 18 Jun 2013 08:13:33 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 10:29:07 GMT]]></title><description><![CDATA[<p>Super, danke! Das mit den Referenzen hat prima geklappt! Weiterführend stehe ich aber vor einem ähnlichen Problem. In die Funktion soll eine weitere Instanz einer anderen Klasse eingefügt werden. Diese Instanz bekommt aber Parameter übergeben. Ein Auszug aus der Klasse sieht wie folgt aus:</p>
<pre><code>class Udp_prtcl_connection
{
  public:

	#ifdef matlab_
	Udp_prtcl_connection(SimStruct *S,unsigned short port_number, int a1, int a2, int a3, int a4, char serve_1_clien_0 );
	#else
	Udp_prtcl_connection(unsigned short port_number, int a1, int a2, int a3, int a4, char serve_1_clien_0 );
	#endif
</code></pre>
<p>Ich habe also folgende Instanz außerhalb der Funktion erstellt:</p>
<pre><code>Udp_prtcl_connection Udp_port1_conn(46, 192, 168, 0, 193, 0);
</code></pre>
<p>und rufe die Funktion auf:</p>
<pre><code>grndstion_prtcl_step(UDP_conn, Udp_port1_conn);
</code></pre>
<p>Die Funktionsdefinition sieht ähnlich aus wie oben, jedoch wurde sie durch die Funktion udp_transmit() der Klasse Udp_prtcl_connection erweitert.</p>
<pre><code>void grndstion_prtcl_step(Protocol &amp;UDP_conn, Udp_prtcl_connection &amp;Udp_port1_conn(unsigned short port_number, int a1, int a2, int a3, int a4, char serve_1_clien_0)){

	char first_sig_descr[28] = &quot;Never incom message&quot;;
	char second_sig_descr[28] = &quot;The Second funny&quot;;
	static double datas_in = 0;
	int tx_buf_size = 500;
	char tx_buffer[SPI_RX_TX_SIZE] = &quot;GET TIME\r\n&quot;;
	char rx_buffer[500];
	int i;
	int UDP_TIMEOUT = 50;

	for(i=0;i&lt;500;i++){
		rx_buffer[i]=0;
		tx_buffer[i]=0;
	}

	datas_in= 35991;
	static float myfloat=297.861;			

	UDP_conn.Signal_do(300,first_sig_descr, 7,&amp;datas_in,PRIO_HIGH,DIR_OUT, DOUBLE);
	UDP_conn.Signal_do(301,second_sig_descr, 7,&amp;myfloat,PRIO_HIGH,DIR_OUT, SINGLE);

	int buffer_written = UDP_conn.write_tx_buf(tx_buffer); 
	printf(&quot;The written Byte num: %d \n&quot;, buffer_written);

	int udp_trans = Udp_port1_conn.udp_transmit(tx_buffer, rx_buffer,SPI_RX_TX_SIZE ,SPI_RX_TX_SIZE, UDP_TIMEOUT);
}
</code></pre>
<p>Der Fehlercode sagt folgendes:</p>
<pre><code>tcp_lib.h:17: error: redefinition of 'class Udp_prtcl_connection'
tcp_lib.h:18: error: previous definition of 'class Udp_prtcl_connection'
</code></pre>
<p>In der tcp_lib.h ist die Klasse Udp_prtcl_connection definiert.<br />
Für weitere Hilfe wäre ich sehr dankbar! Und wie gesagt, bin kein C++-Spezialist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332090</guid><dc:creator><![CDATA[K2daL]]></dc:creator><pubDate>Tue, 18 Jun 2013 10:29:07 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 10:38:36 GMT]]></title><description><![CDATA[<p>Lies bitte erstmal ein gutes Gurndlagenbuch. Bei deinen Wissenslücken hat es recht wenig Sinn, an der Stelle weiterzumachen, an der du dich gerade befindest.</p>
<p>sorry, wenn das jetzt etwas zu direkt ist. Aber sowas</p>
<pre><code class="language-cpp">void grndstion_prtcl_step(Protocol &amp;UDP_conn, Udp_prtcl_connection &amp;Udp_port1_conn(unsigned short port_number, int a1, int a2, int a3, int a4, char serve_1_clien_0)){
</code></pre>
<p>ist schon recht eigenwillig. Willst du hier der Funktion eine Funktion übergeben? Oder was genau ist dein Ziel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332093</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 18 Jun 2013 10:38:36 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 10:39:31 GMT]]></title><description><![CDATA[<pre><code>void grndstion_prtcl_step(Protocol &amp;UDP_conn, Udp_prtcl_connection &amp;Udp_port1_conn(unsigned short port_number, int a1, int a2, int a3, int a4, char serve_1_clien_0))
</code></pre>
<p>Das macht keinen Sinn. Was soll die verschachtelte Klammer?</p>
<p>Ich empfehle übrigens irgendein (gutes!) Grundlagenbuch zu C++. Das hier ist kleines Einmaleins, das muss sitzen. Siehe zweiter und vierter Link in meiner Signatur. &quot;Thinking in C++&quot; ist davon sogar ein freies Ebook, da kann es keine Ausreden des Geldes wegen geben.</p>
<p>Und benutz Vokale! Im Arabischen mag man ohne auskommen, aber in den indogermanischen Sprachen sind sie wichtig!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332094</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 Jun 2013 10:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 10:46:36 GMT]]></title><description><![CDATA[<p>Mir ist klar, dass ich einer Funktion keine Funktion übergeben kann, aber gibt es denn sonst irgendeine Möglichkeit Instanzen mit Parametern zu übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332096</guid><dc:creator><![CDATA[K2daL]]></dc:creator><pubDate>Tue, 18 Jun 2013 10:46:36 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 11:01:45 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<pre><code>void grndstion_prtcl_step(Protocol &amp;UDP_conn, Udp_prtcl_connection &amp;Udp_port1_conn(unsigned short port_number, int a1, int a2, int a3, int a4, char serve_1_clien_0))
</code></pre>
<p>Das macht keinen Sinn. Was soll die verschachtelte Klammer?</p>
</blockquote>
<p>Die Syntax ist (AFAICS) korrekt. Die Notation kennst du doch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<blockquote>
<p>Mir ist klar, dass ich einer Funktion keine Funktion übergeben kann</p>
</blockquote>
<p>Doch doch, kann man.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332100</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 18 Jun 2013 11:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 11:01:48 GMT]]></title><description><![CDATA[<p>K2daL schrieb:</p>
<blockquote>
<p>Mir ist klar, dass ich einer Funktion keine Funktion übergeben kann,</p>
</blockquote>
<p>Doch, das geht.</p>
<blockquote>
<p>aber gibt es denn sonst irgendeine Möglichkeit Instanzen mit Parametern zu übergeben?</p>
</blockquote>
<p>Wieso eine Instanz mit Parametern? Übergib die Instanz!</p>
<p>daddy_felix hat schon Recht, es macht nicht groß Sinn, dir zu helfen, so lange du weder die grundlegende Syntax beherrscht, noch überhaupt eine richtige Vorstellung davon hast, was ein Objekt überhaupt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332102</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 Jun 2013 11:01:48 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 11:20:07 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Die Syntax ist (AFAICS) korrekt. Die Notation kennst du doch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Nicht für das, was er vor hat. Er hat bloß zufällig etwas getroffen, was syntaktisch richtig ist. Möglicherweise sogar durch bloßes Ausprobieren, da man in C++ jeden Mist zu etwas syntaktisch richtigem zurecht biegen kann, wenn man bloß genügend Klammern, Sternchen und Ampersande dranschmeißt.</p>
<p>Deswegen ist es auch gerade so wichtig, dass man ganz genau weiß, wieso man wo welches Zeichen setzt. Jedes Sternchen kann den Sinn eines Ausdrucks komplett verändern. Siehe:<br />
<a href="http://magazin.c-plusplus.net/artikel/%28Humor%29%20Die%20Entstehungsgeschichte%20von%20C" rel="nofollow">http://magazin.c-plusplus.net/artikel/(Humor) Die Entstehungsgeschichte von C</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332103</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 Jun 2013 11:20:07 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 16:09:22 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Jedes Sternchen kann den Sinn eines Ausdrucks komplett verändern. Siehe:<br />
<a href="http://magazin.c-plusplus.net/artikel/%28Humor%29%20Die%20Entstehungsgeschichte%20von%20C" rel="nofollow">http://magazin.c-plusplus.net/artikel/(Humor) Die Entstehungsgeschichte von C</a></p>
</blockquote>
<p>Wobei das Beispiel dort Kinderkram ist.<br />
Dass es seltsam aussieht kommt auch nur durch den Einsatz von Zeichen wie &quot;|&quot; in Strings und der komplett bescheuerten Formatierung zustande.<br />
Wenn man das mit sinnvollen Namen und passend eingerückt hinschreibt ist es überhaupt nicht schlimm.</p>
<p>Da sind in C (mit oder ohne ++) und auch in anderen Sprache viel schlimmere Sachen möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332224</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 18 Jun 2013 16:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to Instanz an Funktion übergeben on Tue, 18 Jun 2013 16:29:09 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Da sind in C (mit oder ohne ++) und auch in anderen Sprache viel schlimmere Sachen möglich.</p>
</blockquote>
<p>Schamlos vom IOCCC geklaut:</p>
<pre><code>int _;main(O,l,o)char**l,**o;{_++&gt;&gt;9||main(1&amp;(o?(int)o:clown:|O*2,l,putchar(_%32?atoi(1[l])&gt;&gt;(7&amp;O&lt;&lt;!o&gt;&gt;!o+29)&amp;32&lt;_|_==16?35:32:10)%10);}
</code></pre>
<p>Sieht auf den zweiten Blick auch recht einfach aus (wie der von der Witzeseite), aber wenn man tiefer eintaucht, sind da doch ein paar ganz schön merkwürdige Operationen drin. Und natürlich zählt auch hier jedes Zeichen und ein Programmierer sollte zumindest benennen können, was die einzelnen Operationen alle machen. Selbst wenn die Anordnung sehr komisch ist (ich blicke selbst nicht so ganz durch).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2332229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2332229</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 Jun 2013 16:29:09 GMT</pubDate></item></channel></rss>