<?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[Übergabe von Objekten via Reference]]></title><description><![CDATA[<p><strong>Folgendes Problem:</strong></p>
<p>Ich habe ein Objekt mit sehr sensiblen Daten zu verwalten. Jetzt werden diese Daten aber von vielen Modulen benötigt, um kleinere vorab-Berechnungen durchführen zu können, die das ursprüngliche Objekt verändern können aber auf keinen Fall sollen.</p>
<p>Bisher mache ich es so:</p>
<pre><code class="language-cpp">// board enthält sensible Daten

nodes = recursion(board, atoi(instruction_list[1]), false);

// board wird verändert darf deshalb nicht mit der Reference arbeiten

nodes_t recursion(const board_c &amp; origin, const int depth, const bool complex) {
  board_c board;

  // initialize

  board.copy(origin);

  // Berechnungen

  if (complex == true) {
    return complex_recursion(board, depth, 0);
  }

  return simple_recursion(board, depth);
}
</code></pre>
<p>Könnte ich auch das board einfach als Kopie übergeben, also ohne den Referenz-Operator und nicht mehr als const? Sorry wegen der naiven Frage, aber ich weiss es nicht genau und zum Probieren bin ich bisher nicht gekommen. Die Frage dient auch für mich zum weiteren Verständnis, wie Objekte bei der Übergabe kopiert werden.</p>
<p><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/255198/übergabe-von-objekten-via-reference</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 03:42:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255198.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Nov 2009 08:16:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Übergabe von Objekten via Reference on Fri, 27 Nov 2009 08:16:37 GMT]]></title><description><![CDATA[<p><strong>Folgendes Problem:</strong></p>
<p>Ich habe ein Objekt mit sehr sensiblen Daten zu verwalten. Jetzt werden diese Daten aber von vielen Modulen benötigt, um kleinere vorab-Berechnungen durchführen zu können, die das ursprüngliche Objekt verändern können aber auf keinen Fall sollen.</p>
<p>Bisher mache ich es so:</p>
<pre><code class="language-cpp">// board enthält sensible Daten

nodes = recursion(board, atoi(instruction_list[1]), false);

// board wird verändert darf deshalb nicht mit der Reference arbeiten

nodes_t recursion(const board_c &amp; origin, const int depth, const bool complex) {
  board_c board;

  // initialize

  board.copy(origin);

  // Berechnungen

  if (complex == true) {
    return complex_recursion(board, depth, 0);
  }

  return simple_recursion(board, depth);
}
</code></pre>
<p>Könnte ich auch das board einfach als Kopie übergeben, also ohne den Referenz-Operator und nicht mehr als const? Sorry wegen der naiven Frage, aber ich weiss es nicht genau und zum Probieren bin ich bisher nicht gekommen. Die Frage dient auch für mich zum weiteren Verständnis, wie Objekte bei der Übergabe kopiert werden.</p>
<p><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/1814106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814106</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Fri, 27 Nov 2009 08:16:37 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von Objekten via Reference on Fri, 27 Nov 2009 08:26:34 GMT]]></title><description><![CDATA[<p>Wenn Funktionsargumente kopiert werden sollen, sollten sie möglichst &quot;by value&quot; übergeben werden, da dies dem Compiler mehr Möglichkeiten für Optimierungen ermöglicht.<br />
In Deinem Beispiel benötigt board_c dafür einen, der copy Methode entsprechenden Kopierkonstruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814112</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Fri, 27 Nov 2009 08:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von Objekten via Reference on Fri, 27 Nov 2009 10:20:28 GMT]]></title><description><![CDATA[<p>Vielleicht wäre es sinnvoller, in board_c einen Backtracking-Mechanismus einzubauen, also eine Art Status-Stack? Dann könntest du das Objekt an die Funktionen als nicht-const übergeben und einfach vor dem Job board_c::push_status() sowie nach dem Job board_c::pop_status() aufrufen.</p>
<p>Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1814159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1814159</guid><dc:creator><![CDATA[DStefan]]></dc:creator><pubDate>Fri, 27 Nov 2009 10:20:28 GMT</pubDate></item></channel></rss>