<?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[Unique_ptr aus der verwalteten Klasse resetten]]></title><description><![CDATA[<p>Hi,</p>
<p>ist folgendes legal?</p>
<pre><code class="language-cpp">#include &lt;memory&gt;
#include &lt;iostream&gt;
#include &lt;deque&gt;

class Mode {
	public:
		static std::unique_ptr&lt;Mode&gt; current;
		virtual void doSomething() = 0;
};

class B : public Mode {
	public:
		void doSomething() { std::cout &lt;&lt; &quot;Mode B &quot; &lt;&lt; std::endl; }
};

class A : public Mode {
	private:
		std::deque&lt;char&gt; chars;
	public:
		A() : chars{'a', 'b', 'c'} {}
		void doSomething() { 
			if(chars.empty() ) { 
                Mode::current.reset(new B);
                return;
            }  
			chars.pop_front();
		}
};

std::unique_ptr&lt;Mode&gt; Mode::current(new A);

int main() {
	for(unsigned i = 0; i &lt; 5; ++i) Mode::current-&gt;doSomething();
	std::cout &lt;&lt; &quot;Done&quot; &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/302295/unique_ptr-aus-der-verwalteten-klasse-resetten</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 10:01:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302295.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Apr 2012 18:00:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unique_ptr aus der verwalteten Klasse resetten on Sun, 15 Apr 2012 18:02:24 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ist folgendes legal?</p>
<pre><code class="language-cpp">#include &lt;memory&gt;
#include &lt;iostream&gt;
#include &lt;deque&gt;

class Mode {
	public:
		static std::unique_ptr&lt;Mode&gt; current;
		virtual void doSomething() = 0;
};

class B : public Mode {
	public:
		void doSomething() { std::cout &lt;&lt; &quot;Mode B &quot; &lt;&lt; std::endl; }
};

class A : public Mode {
	private:
		std::deque&lt;char&gt; chars;
	public:
		A() : chars{'a', 'b', 'c'} {}
		void doSomething() { 
			if(chars.empty() ) { 
                Mode::current.reset(new B);
                return;
            }  
			chars.pop_front();
		}
};

std::unique_ptr&lt;Mode&gt; Mode::current(new A);

int main() {
	for(unsigned i = 0; i &lt; 5; ++i) Mode::current-&gt;doSomething();
	std::cout &lt;&lt; &quot;Done&quot; &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2202283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202283</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Sun, 15 Apr 2012 18:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Unique_ptr aus der verwalteten Klasse resetten on Sun, 15 Apr 2012 18:22:13 GMT]]></title><description><![CDATA[<p>AFAIK ist das in Ordnung solange nach dem delete (reset) keine Member Variablen mehr &quot;angefasst&quot; werden. Ich würde das ähnlich sehen wie delete this.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202290</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 15 Apr 2012 18:22:13 GMT</pubDate></item><item><title><![CDATA[Reply to Unique_ptr aus der verwalteten Klasse resetten on Mon, 16 Apr 2012 01:51:37 GMT]]></title><description><![CDATA[<p>Du hast nen virtuellen Destruktor in Mode vergessen! Abgesehen davon, ist das alles i.O.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202372</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 16 Apr 2012 01:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to Unique_ptr aus der verwalteten Klasse resetten on Mon, 16 Apr 2012 12:59:20 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Du hast nen virtuellen Destruktor in Mode vergessen! Abgesehen davon, ist das alles i.O.</p>
</blockquote>
<p>Stimmt, 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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202497</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Mon, 16 Apr 2012 12:59:20 GMT</pubDate></item></channel></rss>