<?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[Frage zu Parameterübergabe per Referenz]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgendes gecodet und es hat nicht funktioniert (test soll DIREKT die Werte im Array ändern):</p>
<pre><code class="language-cpp">void test(int&amp; x){...}

//main:
int array[10];
for(...)
	test(array[i]);
</code></pre>
<p>Funktioniert nicht!!! Im array stehen danach nur die alten Werte!</p>
<pre><code class="language-cpp">void test(int* x){...}

//main:
for(...)
	test(&amp;array[i]);
</code></pre>
<p>Funktioniert, allerdings muss ich jedes mal, bevor ich etwas mit x mache, dereferenzieren <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=":-/"
      alt="😕"
    /></p>
<p>Meine Frage ist nun, warum geht das nicht? Müsste doch äquivalent sein? <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/269515/frage-zu-parameterübergabe-per-referenz</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 06:53:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269515.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Jun 2010 16:13:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Parameterübergabe per Referenz on Sat, 26 Jun 2010 16:13:15 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgendes gecodet und es hat nicht funktioniert (test soll DIREKT die Werte im Array ändern):</p>
<pre><code class="language-cpp">void test(int&amp; x){...}

//main:
int array[10];
for(...)
	test(array[i]);
</code></pre>
<p>Funktioniert nicht!!! Im array stehen danach nur die alten Werte!</p>
<pre><code class="language-cpp">void test(int* x){...}

//main:
for(...)
	test(&amp;array[i]);
</code></pre>
<p>Funktioniert, allerdings muss ich jedes mal, bevor ich etwas mit x mache, dereferenzieren <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=":-/"
      alt="😕"
    /></p>
<p>Meine Frage ist nun, warum geht das nicht? Müsste doch äquivalent sein? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1917679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917679</guid><dc:creator><![CDATA[*lt**Exit*gt*]]></dc:creator><pubDate>Sat, 26 Jun 2010 16:13:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterübergabe per Referenz on Sat, 26 Jun 2010 16:31:17 GMT]]></title><description><![CDATA[<p>Hmm, ich kann hier keinen Fehler erkennen. Zeig doch mal den ganzen Code, der nicht funktioniert. Ich habe kurz etwas vergleichbares programmiert und das funktioniert einwandfrei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917683</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sat, 26 Jun 2010 16:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterübergabe per Referenz on Sat, 26 Jun 2010 16:35:37 GMT]]></title><description><![CDATA[<p>das muss gehen - da lag dein fehler wo anders...</p>
<p>btw:<br />
<code>&amp;array[x]</code> == <code>array+x</code></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917684</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 26 Jun 2010 16:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterübergabe per Referenz on Sat, 26 Jun 2010 16:53:11 GMT]]></title><description><![CDATA[<p>Danke für die schnellen Antworten!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">#include &lt;boost/bind.hpp&gt;
#include &lt;boost/thread.hpp&gt;
//bla bla

void rle(..., pair&lt;int, char&gt;*&amp; ret, unsigned int&amp; size){...}

//main:
//...

pair&lt;int, char&gt;* ret[nr_threads];
unsigned int size[nr_threads];

//start threads
for(unsigned int i = 0; i &lt; nr_threads; ++i){
	//create thread with own memory!
	ret[i] = NULL;
	size[i] = 0;
	thread* t = new thread(bind(rle, ... , ret[i], size[i]));
}
</code></pre>
<p>Ich hoffe mal da sind nicht noch andere Fehler drin, ich hab schon ein bisschen dran rumgebastelt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917692</guid><dc:creator><![CDATA[*lt**Exit*gt*]]></dc:creator><pubDate>Sat, 26 Jun 2010 16:53:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterübergabe per Referenz on Sat, 26 Jun 2010 18:13:01 GMT]]></title><description><![CDATA[<p>lern mal richtig die grundlagen vor du mit threads und boost bind rumwirfst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917703</guid><dc:creator><![CDATA[mal ehrlich]]></dc:creator><pubDate>Sat, 26 Jun 2010 18:13:01 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterübergabe per Referenz on Sat, 26 Jun 2010 19:59:54 GMT]]></title><description><![CDATA[<p>mal ehrlich schrieb:</p>
<blockquote>
<p>lern mal richtig die grundlagen vor du mit threads und boost bind rumwirfst</p>
</blockquote>
<p>Da bin ich ja gerade dabei... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Nur habe ich leider weder ein gutes Buch noch ein gutes Online-Nachschlagwerk gefunden. Die einzige Quelle die google da ständig auswirft, ist <a href="http://boost.org" rel="nofollow">boost.org</a> - welche ich eher verwirrender als hilfreich finde.</p>
<p>Ich hab auch zuerst versucht ohne bind auszukommen, aber Funktionspointer lassen sich allem Anschein nach nicht in allen Versionen von boost an thread-construktoren übergeben. (und structs mit überladenem ()-operator sind ja wohl nicht gerade einfacher :D)</p>
<p>Ich hätte nur gerne gewusst, wieso Pointer funktionieren und Referenzen nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917736</guid><dc:creator><![CDATA[*lt**Exit*gt*]]></dc:creator><pubDate>Sat, 26 Jun 2010 19:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterübergabe per Referenz on Sat, 26 Jun 2010 20:18:16 GMT]]></title><description><![CDATA[<p>&lt;/Exit&gt; schrieb:</p>
<blockquote>
<p>Ich hätte nur gerne gewusst, wieso Pointer funktionieren und Referenzen nicht.</p>
</blockquote>
<p>Das liegt an <code>boost::bind</code> . Dessen Parameter werden per Value übergeben und <code>ret[i]</code> hat den Typ <code>pair&lt;int, char&gt;</code> und nicht etwa <code>pair&lt;int, char&gt;&amp;</code> . An die Funktion wird also eine Referenz auf die <code>bind</code> -interne Kopie von <code>ref[i]</code> übergeben. Bei Zeigern kein Problem, bei Referenzen schon. Die Lösung könnte <a href="http://www.boost.org/doc/libs/1_43_0/doc/html/ref.html" rel="nofollow">boost::ref</a> sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917739</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sat, 26 Jun 2010 20:18:16 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Parameterübergabe per Referenz on Sat, 26 Jun 2010 21:12:08 GMT]]></title><description><![CDATA[<p>Ahh, vielen Dank für die hilfreiche Antwort... sogar schon mit Lösung - super <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917756</guid><dc:creator><![CDATA[*lt**Exit*gt*]]></dc:creator><pubDate>Sat, 26 Jun 2010 21:12:08 GMT</pubDate></item></channel></rss>