<?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[objekt aus funktion zurückgeben auto_ptr]]></title><description><![CDATA[<p>hi,<br />
also ich hab folgende konstruktion:<br />
ich hab ne server-socket klasse die ein socket objekt aus der accept funktion mit auto pointer zurückgibt -&gt; vorteil kein delete<br />
das problem ist jetzt das der boost::shared_ptr zeigt immer auf 0 zeigt beim beenden des programmes, weil sich kein socket connected....auch richtig so!<br />
wäre da ein policy_ptr so gut geeignet? oder wie würdet ihr das lösen?<br />
cu</p>
<pre><code class="language-cpp">server-socket-klasse von socket klasse abgeleitet:
std::auto_ptr&lt;Socket&gt; accept() const
{
	assert(isValid());
	SOCKET socket = ::accept(socket_, NULL, NULL);

	if(socket == INVALID_SOCKET)
	{
		THROW_SOCKET_EXCEPTION(&quot;::accept failed!&quot;);
	}

        return std::auto_ptr&lt;Socket&gt;(new Socket(socket)); 
}

server-klasse:
private: 
     ServerSocket m_serverSocket;
public:
void SocketReceive()
{
	boost::shared_ptr&lt;Socket&gt; spSocket_;
	char buffer[1024];
	unsigned int clientcount = 0;

	while(1)
	{
		try
		{
			if(clientcount==0) {
				spSocket_ = m_serverSocket.accept();
				clientcount++;
			}

			memset(&amp;buffer, 0, sizeof(buffer)); 
			spSocket_-&gt;receive(buffer, 1024);

			//......
		}
		catch(SocketException &amp;e)
		{
			clientcount--;
			std::string str;
			str = e.show();
			//MessageBox(NULL, str.c_str(), &quot;error&quot;, NULL);
		}
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/126227/objekt-aus-funktion-zurückgeben-auto_ptr</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 14:48:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126227.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Nov 2005 01:31:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 01:31:09 GMT]]></title><description><![CDATA[<p>hi,<br />
also ich hab folgende konstruktion:<br />
ich hab ne server-socket klasse die ein socket objekt aus der accept funktion mit auto pointer zurückgibt -&gt; vorteil kein delete<br />
das problem ist jetzt das der boost::shared_ptr zeigt immer auf 0 zeigt beim beenden des programmes, weil sich kein socket connected....auch richtig so!<br />
wäre da ein policy_ptr so gut geeignet? oder wie würdet ihr das lösen?<br />
cu</p>
<pre><code class="language-cpp">server-socket-klasse von socket klasse abgeleitet:
std::auto_ptr&lt;Socket&gt; accept() const
{
	assert(isValid());
	SOCKET socket = ::accept(socket_, NULL, NULL);

	if(socket == INVALID_SOCKET)
	{
		THROW_SOCKET_EXCEPTION(&quot;::accept failed!&quot;);
	}

        return std::auto_ptr&lt;Socket&gt;(new Socket(socket)); 
}

server-klasse:
private: 
     ServerSocket m_serverSocket;
public:
void SocketReceive()
{
	boost::shared_ptr&lt;Socket&gt; spSocket_;
	char buffer[1024];
	unsigned int clientcount = 0;

	while(1)
	{
		try
		{
			if(clientcount==0) {
				spSocket_ = m_serverSocket.accept();
				clientcount++;
			}

			memset(&amp;buffer, 0, sizeof(buffer)); 
			spSocket_-&gt;receive(buffer, 1024);

			//......
		}
		catch(SocketException &amp;e)
		{
			clientcount--;
			std::string str;
			str = e.show();
			//MessageBox(NULL, str.c_str(), &quot;error&quot;, NULL);
		}
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/916501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916501</guid><dc:creator><![CDATA[cplusplus.]]></dc:creator><pubDate>Sun, 13 Nov 2005 01:31:09 GMT</pubDate></item><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 10:58:09 GMT]]></title><description><![CDATA[<p>Moin cplusplus,</p>
<p>in meiner Socket Klasse hat die accept Funktion ne andere Signatur:</p>
<pre><code class="language-cpp">bool socket::accept ( socket&amp; otherSocket )
</code></pre>
<p>Juhu, keine Pointer mehr <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/916586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916586</guid><dc:creator><![CDATA[Headhunter]]></dc:creator><pubDate>Sun, 13 Nov 2005 10:58:09 GMT</pubDate></item><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 12:50:03 GMT]]></title><description><![CDATA[<p>moin,<br />
ja so gehts auch...hatte ich mal am anfang,<br />
aber kann ich da mit policy_ptr nicht nene kleinen hack machen?</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916678</guid><dc:creator><![CDATA[cplusplus.]]></dc:creator><pubDate>Sun, 13 Nov 2005 12:50:03 GMT</pubDate></item><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 13:02:02 GMT]]></title><description><![CDATA[<blockquote>
<p>das problem ist jetzt das der boost::shared_ptr zeigt immer auf 0 zeigt beim beenden des programmes</p>
</blockquote>
<p>ist doch kein problem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916688</guid><dc:creator><![CDATA[rofl.]]></dc:creator><pubDate>Sun, 13 Nov 2005 13:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 22:06:05 GMT]]></title><description><![CDATA[<p>anscheinend doch:<br />
Assertion failed! PRogram: C:\... File: c:\boost..\shared_ptr.hpp Line: 253 Expression: px != 0<br />
For information on how your program can cause...</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916841</guid><dc:creator><![CDATA[cplusplus.]]></dc:creator><pubDate>Sun, 13 Nov 2005 22:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 22:24:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{
    boost::shared_ptr&lt;int&gt; keinProblem;
}
</code></pre>
<p>läuft! also!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916854</guid><dc:creator><![CDATA[rofl.]]></dc:creator><pubDate>Sun, 13 Nov 2005 22:24:17 GMT</pubDate></item><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 22:26:40 GMT]]></title><description><![CDATA[<p>in 253 von shared_ptr.hpp steht bei mir</p>
<pre><code class="language-cpp">T * operator-&gt; () const // never throws
{
   BOOST_ASSERT(px != 0);
   return px;
}
</code></pre>
<p>also ist ja klar das es nicht funktioniert wenn du versuchst darauf zuzugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916856</guid><dc:creator><![CDATA[rofl.]]></dc:creator><pubDate>Sun, 13 Nov 2005 22:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 23:15:59 GMT]]></title><description><![CDATA[<p>problem gelöst;-)<br />
aber was ist ein policy_ptr? in modernc++ sehe ich nur policy klassen!?<br />
cu</p>
<pre><code class="language-cpp">void SocketReceive()
	{
		while(1)
		{
			try
			{
				if(clientcount==0) {
					spSocket_ = m_serverSocket.accept();
					clientcount++;
				}
				else {
					memset(&amp;buffer, 0, sizeof(buffer)); 
					spSocket_-&gt;receive(buffer, 1024);
				}

				// Farben empfangen
				if(check_number(buffer[0])) {
					int surface_color[54];
					for(unsigned int i=0; i&lt;=strlen(buffer); i++) {
						std::string b;
						b = buffer[i];
						std::stringstream ss(b);
						ss &gt;&gt; surface_color[i];
					}
					rubi.intialize_surface(surface_color);
				}
				// Loesungszeuge empfangen
				else {  
					boost::mutex::scoped_lock
						lock(io_mutex);

					movements.clear();
					movements_done = 0;
					movements = buffer;
				}
			}
			catch(SocketException &amp;e)
			{
				clientcount--;
				if(clientcount == -1) throw; &lt;--- das vergessen
			}
		}
	}
private:
	ServerSocket m_serverSocket;
	boost::shared_ptr&lt;Socket&gt; spSocket_;
	char buffer[1024];
	unsigned int clientcount;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/916899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916899</guid><dc:creator><![CDATA[cplusplus.]]></dc:creator><pubDate>Sun, 13 Nov 2005 23:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to objekt aus funktion zurückgeben auto_ptr on Sun, 13 Nov 2005 23:27:51 GMT]]></title><description><![CDATA[<p>ok, geklärt:<br />
= a smart pointer using policies to set how it acts<br />
lohnt es sich sowas selbst zu bauen?</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/916903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/916903</guid><dc:creator><![CDATA[cplusplus.]]></dc:creator><pubDate>Sun, 13 Nov 2005 23:27:51 GMT</pubDate></item></channel></rss>