<?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[shared_ptr Zuweisung?]]></title><description><![CDATA[<p>Abend!</p>
<p>Kann mir jemand sagen wieso folgende Zeilen nicht gehen?</p>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;Box&gt; boxPtr;
boxPtr = new Box(2,2,2); // No matching operator found
</code></pre>
<p>Sehe ich das richtig, dass ein shared_ptr&lt;Foo&gt; keinen operator=(Foo*) besitzt?<br />
Wie soll ich dann nachträglich den shared_ptr auf was anderes zeigen lassen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289980/shared_ptr-zuweisung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 09:43:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289980.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Jul 2011 20:45:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sat, 16 Jul 2011 20:45:41 GMT]]></title><description><![CDATA[<p>Abend!</p>
<p>Kann mir jemand sagen wieso folgende Zeilen nicht gehen?</p>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;Box&gt; boxPtr;
boxPtr = new Box(2,2,2); // No matching operator found
</code></pre>
<p>Sehe ich das richtig, dass ein shared_ptr&lt;Foo&gt; keinen operator=(Foo*) besitzt?<br />
Wie soll ich dann nachträglich den shared_ptr auf was anderes zeigen lassen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093714</guid><dc:creator><![CDATA[Nachteule]]></dc:creator><pubDate>Sat, 16 Jul 2011 20:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sat, 16 Jul 2011 21:05:57 GMT]]></title><description><![CDATA[<p>Nachteule schrieb:</p>
<blockquote>
<p>Abend!</p>
<p>Kann mir jemand sagen wieso folgende Zeilen nicht gehen?</p>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;Box&gt; boxPtr;
boxPtr = new Box(2,2,2); // No matching operator found
</code></pre>
<p>Sehe ich das richtig, dass ein shared_ptr&lt;Foo&gt; keinen operator=(Foo*) besitzt?</p>
</blockquote>
<p>ja</p>
<blockquote>
<p>Wie soll ich dann nachträglich den shared_ptr auf was anderes zeigen lassen?</p>
</blockquote>
<p>Durch:</p>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;Box&gt; boxPtr;
boxPtr.reset(new Box(2,2,2));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2093717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093717</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Sat, 16 Jul 2011 21:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sat, 16 Jul 2011 22:38:40 GMT]]></title><description><![CDATA[<p>Ok.<br />
Aber wieso geht dann das hier schon:</p>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;int&gt; ptr;
ptr = NULL;
</code></pre>
<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/2093732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093732</guid><dc:creator><![CDATA[Nachteule]]></dc:creator><pubDate>Sat, 16 Jul 2011 22:38:40 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sat, 16 Jul 2011 23:30:58 GMT]]></title><description><![CDATA[<p>Nachteule schrieb:</p>
<blockquote>
<p>Ok.<br />
Aber wieso geht dann das hier schon:</p>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;int&gt; ptr;
ptr = NULL;
</code></pre>
<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>
</blockquote>
<p>Also bei mir kommt auch bei diesem Code dieselbe Fehlermeldung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093750</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Sat, 16 Jul 2011 23:30:58 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sat, 16 Jul 2011 23:32:30 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>Nachteule schrieb:</p>
<blockquote>
<p>Ok.<br />
Aber wieso geht dann das hier schon:</p>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;int&gt; ptr;
ptr = NULL;
</code></pre>
<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>
</blockquote>
<p>Also bei mir kommt auch bei diesem Code dieselbe Fehlermeldung.</p>
</blockquote>
<p>Hm, also bei mir gehts (VS 2010).</p>
<p>Kann das vielleicht sonst noch wer testen, der VS 2010 hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093751</guid><dc:creator><![CDATA[Nachteule]]></dc:creator><pubDate>Sat, 16 Jul 2011 23:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 07:05:48 GMT]]></title><description><![CDATA[<p><code>NULL</code> ist eine Integer. Vielleicht hat die Implementierung von VS2010 einen Zuweisungsoperator für Integer implementiert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093780</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 17 Jul 2011 07:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 07:12:14 GMT]]></title><description><![CDATA[<p>also bei mir klappt das auch (VS2010)</p>
<p>die methode die aufgerufen wird ist folgende:</p>
<pre><code class="language-cpp">shared_ptr(_STD nullptr_t)
		{	// construct with nullptr
		_Resetp((_Ty *)0);
		}
</code></pre>
<p>wobei _STD ein define auf ::std:: ist und nullptr_t ein typedef</p>
<pre><code class="language-cpp">typedef decltype(__nullptr) nullptr_t;
</code></pre>
<p>was heisst dieses decltype ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093781</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 17 Jul 2011 07:12:14 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 07:49:03 GMT]]></title><description><![CDATA[<p><code>decltype</code> ist ein Schlüsselwort des nächsten Standards. Es lässt den Programmierer den Typ einer Variable &quot;ermitteln&quot;:</p>
<pre><code class="language-cpp">int foo;
//Ich will eine neue Instanz des Typen, welcher foo hat
decltype(foo) foo2;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2093783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093783</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 17 Jul 2011 07:49:03 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 10:54:01 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>also bei mir klappt das auch (VS2010)</p>
<p>die methode die aufgerufen wird ist folgende:</p>
<pre><code class="language-cpp">shared_ptr(_STD nullptr_t)
		{	// construct with nullptr
		_Resetp((_Ty *)0);
		}
</code></pre>
<p>wobei _STD ein define auf ::std:: ist und nullptr_t ein typedef</p>
<pre><code class="language-cpp">typedef decltype(__nullptr) nullptr_t;
</code></pre>
<p>was heisst dieses decltype ?</p>
</blockquote>
<p>Wieso ist die Implementierung der STL Klassen eigentlich immer so extrem hässlich? Wenn ich einen STL Header aufmache, könnte ich kotzen. Überall total unleserliche, kryptische Namen, Unterstriche ohne Ende. Is das eine Art von Obfuscating <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Ok, dann ist ptr = NULL also ein gültiger Weg um einen Null-Shared Pointer zu erzeugen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093819</guid><dc:creator><![CDATA[Nachteule]]></dc:creator><pubDate>Sun, 17 Jul 2011 10:54:01 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 11:16:46 GMT]]></title><description><![CDATA[<p>Nachteule schrieb:</p>
<blockquote>
<p>Ok, dann ist ptr = NULL also ein gültiger Weg um einen Null-Shared Pointer zu erzeugen?</p>
</blockquote>
<p>Nein. <code>nullptr</code> und <code>NULL</code> ist nicht das Gleiche. Ohnehin würde ich hier <code>reset()</code> aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093822</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 17 Jul 2011 11:16:46 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 11:22:53 GMT]]></title><description><![CDATA[<p>Nachteule schrieb:</p>
<blockquote>
<p>Wieso ist die Implementierung der STL Klassen eigentlich immer so extrem hässlich? Wenn ich einen STL Header aufmache, könnte ich kotzen. Überall total unleserliche, kryptische Namen, Unterstriche ohne Ende. Is das eine Art von Obfuscating <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
</blockquote>
<p>Zumindest die Unterstriche sind keine Obfuscation, sondern ein Mechanismus, um Namenskollisionen zu vermeiden. Was hält dich beispielsweise davon ab, ein #define Ty zu schreiben? Das ist nicht verboten, würde aber, wenn die Variable im Standardheader auch so heißen würde, höchstwahrscheinlich zu großen Problemen führen. Deshalb gibt es einige Bezeichner, die der Implementation vorbehalten sind, sprich: die der Programmierer nicht verwenden darf. Unter anderem sind das alle Bezeichner, die mit zwei Unterstrichen oder mit Unterstrich-Großbuchstabe anfangen, beispielsweise _Ty, __nullptr, _Resetp. Wer darauf #defines setzt, ist dann selbst schuld.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093826</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 17 Jul 2011 11:22:53 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 12:39:36 GMT]]></title><description><![CDATA[<p>Ok ich frage am besten mal konkret. Nur damit ich es auch zukünftig richtig mache. Ich habe eine Funktion die einen shared_ptr&lt;Foo&gt; zurückgibt. Es kann nun jedoch sein, dass was schief geht und dann will ich einen NULL shared_ptr liefern.</p>
<pre><code class="language-cpp">typedef shared_ptr&lt;Foo&gt; FooPtr;

FooPtr Creator::createXY(params...) {
   FooPtr ptr( new Foo(params) );

   if(ptr-&gt;init()) 
      mFooList.push_back(ptr);
   else {
      // Initialisierung von Foo klappte nicht. Hier muss ich das erzeuge Foo
      // löschen und einen &quot;NULL ptr&quot; liefern. 
      ptr = NULL;
   }

return ptr;
}
</code></pre>
<p>Ist der Code so richtig? Habe mal etwas debuggt und es scheint (!) zu klappen. Also in der Zeile ptr = NULL wird der Foo Dtor aufgerufen. Also ist der Code korrekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093852</guid><dc:creator><![CDATA[Nachteule]]></dc:creator><pubDate>Sun, 17 Jul 2011 12:39:36 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 12:49:57 GMT]]></title><description><![CDATA[<p>1.- durch testen/debuggen kannst du nur das vorhandensein von fehlern beweisen, nie aber die abwesenheit von fehlern</p>
<p>2.- nimm shared_ptr&lt;&gt;.reset() ohne parameter. das mit dem = NULL schluckt nur VS2010, da kannst schnell mal probleme bekommen</p>
<p>3.- sonst ist alles ok, sofern du indem vector auch shared_ptr speicherst/speichern willst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093855</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 17 Jul 2011 12:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 12:51:26 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>1.- durch testen/debuggen kannst du nur das vorhandensein von fehlern beweisen, nie aber die abwesenheit von fehlern</p>
<p>2.- nimm shared_ptr&lt;&gt;.reset() ohne parameter. das mit dem = NULL schluckt nur VS2010, da kannst schnell mal probleme bekommen</p>
<p>3.- sonst ist alles ok, sofern du indem vector auch shared_ptr speicherst/speichern willst</p>
</blockquote>
<p>Ok, danke! <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="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093856</guid><dc:creator><![CDATA[TagEule]]></dc:creator><pubDate>Sun, 17 Jul 2011 12:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr Zuweisung? on Sun, 17 Jul 2011 12:58:51 GMT]]></title><description><![CDATA[<p>Oder einfach so:</p>
<pre><code class="language-cpp">FooPtr ptr(new Foo);
if (ptr-&gt;init())
{
    mFooList.push_back(ptr);
    return ptr;
}
else
{
    return FooPtr();
}
</code></pre>
<p>Hier sieht man in jedem Fall gleich, was zurückgegeben wird. <code>reset()</code> ist auch nicht nötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093861</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 17 Jul 2011 12:58:51 GMT</pubDate></item></channel></rss>