<?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[Nicht besitzende Abhängigkeit]]></title><description><![CDATA[<p>Wie macht ihr nicht besitzende Abhängigkeiten klar? Also z.B.</p>
<pre><code class="language-cpp">struct struct_1
{
};

struct struct_2
{
  struct_1* s_;
  struct_2(struct_1 s)
    : s_(&amp;s)
  {
  }
};

struct_2 foo()
{
  struct_1 s;
  struct_2 s2(s);
  return s2; // Nicht gut
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/303972/nicht-besitzende-abhängigkeit</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 03:54:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303972.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 May 2012 17:08:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sat, 26 May 2012 17:08:23 GMT]]></title><description><![CDATA[<p>Wie macht ihr nicht besitzende Abhängigkeiten klar? Also z.B.</p>
<pre><code class="language-cpp">struct struct_1
{
};

struct struct_2
{
  struct_1* s_;
  struct_2(struct_1 s)
    : s_(&amp;s)
  {
  }
};

struct_2 foo()
{
  struct_1 s;
  struct_2 s2(s);
  return s2; // Nicht gut
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2215844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215844</guid><dc:creator><![CDATA[besitzer]]></dc:creator><pubDate>Sat, 26 May 2012 17:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sat, 26 May 2012 17:47:04 GMT]]></title><description><![CDATA[<p>- ein Kommentar<br />
- logisches Denken</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215850</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 26 May 2012 17:47:04 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sat, 26 May 2012 17:52:20 GMT]]></title><description><![CDATA[<p>Eigentlich gar nicht (oder zumindest kein großes Aufheben darum machen), da dies der Normalfall ist. Umgekehrt würde ich es kenntlich machen (durch Kommentare/Dokumentation). Ich würde jedoch die Übergabe der Zeigers explizit per Zeiger machen, nicht per Referenz. Dies ist bei dir im Beispiel übrigens falsch, da du mit &amp;s die Adresse der lokalen struct_1-Kopie <code>s</code> nimmst, nicht die vom <code>s</code> aus foo().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215853</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 26 May 2012 17:52:20 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sat, 26 May 2012 18:03:19 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Dies ist bei dir im Beispiel übrigens falsch, da du mit &amp;s die Adresse der lokalen struct_1-Kopie <code>s</code> nimmst, nicht die vom <code>s</code> aus foo().</p>
</blockquote>
<p>Sollte per Referenz sein. Habe das &amp; vergessen.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Normalfall</p>
</blockquote>
<p>Würde ich nicht sagen. Ist es nicht eher öfter, dass man den Zeiger nicht speichert?</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Ich würde jedoch die Übergabe der Zeigers explizit per Zeiger machen, nicht per Referenz.</p>
</blockquote>
<p>Das würde bei mir implizieren, dass der Zeiger auch 0 sein kann.<br />
Nicht so ganz zufriedenstellend. Mir will aber auch kein Geistesblitz kommen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215856</guid><dc:creator><![CDATA[besitzer]]></dc:creator><pubDate>Sat, 26 May 2012 18:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sat, 26 May 2012 18:06:06 GMT]]></title><description><![CDATA[<p>besitzer schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Normalfall</p>
</blockquote>
<p>Würde ich nicht sagen. Ist es nicht eher öfter, dass man den Zeiger nicht speichert?</p>
</blockquote>
<p>Ich meinte, dass eine nicht-besitzende Abhängigkeit der Normalfall ist, im Gegensatz zur Besitzübernahme. Dass überhaupt eine Abhängigkeit da ist, ist natürlich nicht normal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215857</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 26 May 2012 18:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sat, 26 May 2012 18:31:04 GMT]]></title><description><![CDATA[<p>Für jede Art von Besitz gibt's ja die hübschen weak_, shared_ und unique_ptr. Aber das Problem mit dem nicht besitzen kenne ich auch. Bzw. ich kenne einfach keine schöne Variante, diese Art von Abhängigkeit im Code auszudrücken. Offen gesagt bezweifel ich auch, dass das mit C++ sinnvoll geht. Was man machen könnte wäre</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class saved_ptr
{
  T* ptr_;
public:
  explicit saved_ptr(T* ptr)
    : ptr_(ptr)
  {}
  // Überladungen
};

template &lt;typename T&gt;
saved_ptr&lt;T&gt; make_saved(T* ptr)
{
  return saved_ptr&lt;T&gt;(ptr);
}
</code></pre>
<p>Denn dann wäre man zumindest gezwungen zu schreiben</p>
<pre><code class="language-cpp">struct_2 foo()
{
  struct_1 s;
  struct_2 s2(make_saved(&amp;s));
  return s2; // Nicht gut
}
</code></pre>
<p>was so einen Fehler schon unwahrscheinlicher macht. Ob das sinnvoll so ist, weiß ich aber nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215860</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 26 May 2012 18:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sat, 26 May 2012 20:17:57 GMT]]></title><description><![CDATA[<p>Ein roher Zeiger drückt doch genau das aus - nicht besitzend...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215883</guid><dc:creator><![CDATA[314159265358979__]]></dc:creator><pubDate>Sat, 26 May 2012 20:17:57 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sat, 26 May 2012 20:20:05 GMT]]></title><description><![CDATA[<p>314159265358979__ schrieb:</p>
<blockquote>
<p>Ein roher Zeiger drückt doch genau das aus - nicht besitzend...</p>
</blockquote>
<p>Ja, aber er drückt nicht aus: Wird gespeichert. <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/2215884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215884</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 26 May 2012 20:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Nicht besitzende Abhängigkeit on Sun, 27 May 2012 01:19:59 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>314159265358979__ schrieb:</p>
<blockquote>
<p>Ein roher Zeiger drückt doch genau das aus - nicht besitzend...</p>
</blockquote>
<p>Ja, aber er drückt nicht aus: Wird gespeichert. <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>
</blockquote>
<p>Naja...</p>
<p>Wenn ich wo ne Referenz übergebe gehe ich davon aus dass die Referenz nicht gespeichert wird (sei's nun als Referenz oder als Zeiger).</p>
<p>Wenn ich dagegen nen Zeiger übergebe, dann rechne ich zumindest eher damit dass da was gespeichert werden könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215915</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 27 May 2012 01:19:59 GMT</pubDate></item></channel></rss>