<?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[STL push back funkioniert nicht.]]></title><description><![CDATA[<p>Hallo, ich habe stl list in vs2008, um elemente abzuspeichern.</p>
<p>die Elemente sidn folgendermaßen definiert:</p>
<pre><code class="language-cpp">typedef struct glob_mem {
		SOCKADDR_IN Sender;
		int length;

} GLOB_MEM, *SHAREDMEM;	

class SHAREDMEM_CLASS
{
public:
	SHAREDMEM el;
	SHAREDMEM_CLASS();
	SHAREDMEM_CLASS(const SHAREDMEM_CLASS &amp;);
	~SHAREDMEM_CLASS();
};

typedef std::list&lt;SHAREDMEM_CLASS&gt; ItemList;
</code></pre>
<p>das problem ist das ich später beim zufügen von elementen immer undef. werte einfügen:</p>
<pre><code class="language-cpp">//....
rcv = recvfrom(*sock,buffer,sizeof buffer,0,(SOCKADDR*)&amp;UDPSender,&amp;UDPSenderLen);
//....
SHAREDMEM_CLASS* sharedbuff_temp = new SHAREDMEM_CLASS;

	sharedbuff_temp-&gt;el-&gt;Sender=UDPSender;
       sharedbuff_temp-&gt;el-&gt;length=UDPSenderLen;

	ItemList.push_back (*sharedbuff_temp);

	delete sharedbuff_temp;
</code></pre>
<p>Das Problem ist jetzt das der initialisierte werte in die Liste eingeben werden. Nicht der neu gesetzte UDPSender. obwohl in sharedbuff der neue UDP sender zwischengespeichert wurde. Bin echt am verzweifeln, kann mir das nicht erklären warum die daten in der Liste nicht stehen. es wird auch nur das Elemente geschrieben und später ausgelesen, aber immer mit unbrauchbaren werten und nicht mit den neuen übergeben die i sharedbuff_temp waren.</p>
<p>danke für hilfreiche vorschläge</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269431/stl-push-back-funkioniert-nicht</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 06:53:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269431.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Jun 2010 19:53:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL push back funkioniert nicht. on Thu, 24 Jun 2010 20:23:58 GMT]]></title><description><![CDATA[<p>Hallo, ich habe stl list in vs2008, um elemente abzuspeichern.</p>
<p>die Elemente sidn folgendermaßen definiert:</p>
<pre><code class="language-cpp">typedef struct glob_mem {
		SOCKADDR_IN Sender;
		int length;

} GLOB_MEM, *SHAREDMEM;	

class SHAREDMEM_CLASS
{
public:
	SHAREDMEM el;
	SHAREDMEM_CLASS();
	SHAREDMEM_CLASS(const SHAREDMEM_CLASS &amp;);
	~SHAREDMEM_CLASS();
};

typedef std::list&lt;SHAREDMEM_CLASS&gt; ItemList;
</code></pre>
<p>das problem ist das ich später beim zufügen von elementen immer undef. werte einfügen:</p>
<pre><code class="language-cpp">//....
rcv = recvfrom(*sock,buffer,sizeof buffer,0,(SOCKADDR*)&amp;UDPSender,&amp;UDPSenderLen);
//....
SHAREDMEM_CLASS* sharedbuff_temp = new SHAREDMEM_CLASS;

	sharedbuff_temp-&gt;el-&gt;Sender=UDPSender;
       sharedbuff_temp-&gt;el-&gt;length=UDPSenderLen;

	ItemList.push_back (*sharedbuff_temp);

	delete sharedbuff_temp;
</code></pre>
<p>Das Problem ist jetzt das der initialisierte werte in die Liste eingeben werden. Nicht der neu gesetzte UDPSender. obwohl in sharedbuff der neue UDP sender zwischengespeichert wurde. Bin echt am verzweifeln, kann mir das nicht erklären warum die daten in der Liste nicht stehen. es wird auch nur das Elemente geschrieben und später ausgelesen, aber immer mit unbrauchbaren werten und nicht mit den neuen übergeben die i sharedbuff_temp waren.</p>
<p>danke für hilfreiche vorschläge</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916991</guid><dc:creator><![CDATA[greenghecco]]></dc:creator><pubDate>Thu, 24 Jun 2010 20:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to STL push back funkioniert nicht. on Thu, 24 Jun 2010 20:12:57 GMT]]></title><description><![CDATA[<p>Also das zweite Codestück verwirrt mich. Kann es sein, dass du mit <code>sharedbuff_temp</code> in Wirklichkeit <code>kadsharedbuff_temp</code> meinst?</p>
<p>Wenn dem so ist, dann gibt es mehrere Probleme.</p>
<p>Wenn du so etwas in den container einfügst, dann wird das Objekt kopiert. Das heisst, dass bei dir der Kopierkonstruktor von <code>SHAREDMEM_CLASS</code> aufgerufen wird, welcher wie ich mal annehme, dass er lediglich eine flache Kopier erstellt (Zeiger werden einfach kopiert, anstatt neu angelegt).<br />
Dann nach dem einfügen zerstörst du das angelete Objekt und mit dem ebenfalls den Zeiger auf den <code>SHAREDMEM</code> , den du in der Klasse hast.</p>
<p>Ansonsten sieht das ganze sehr nach C aus, als C++ (dein struct z.B). Daten gehören üblicherweise als <code>private</code> deklariert.</p>
<p>Falls das nicht geholfen hat poste doch bitte mal ein vollständiges Beispiel, wo der gleiche Fehler auftritt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917004</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 24 Jun 2010 20:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to STL push back funkioniert nicht. on Thu, 24 Jun 2010 20:24:35 GMT]]></title><description><![CDATA[<p>oh entschuldige, nein das soll nur sharedbuff sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917006</guid><dc:creator><![CDATA[greenghecco]]></dc:creator><pubDate>Thu, 24 Jun 2010 20:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to STL push back funkioniert nicht. on Thu, 24 Jun 2010 20:59:08 GMT]]></title><description><![CDATA[<p>ok, also hier die Klasse</p>
<pre><code class="language-cpp">class SHAREDMEM_CLASS
{
public:
	SHAREDMEM el;
	SHAREDMEM_CLASS();
	SHAREDMEM_CLASS(const SHAREDMEM_CLASS &amp;);
	~SHAREDMEM_CLASS();
};
</code></pre>
<p>und die definition der funktionen:</p>
<pre><code class="language-cpp">SHAREDMEM_CLASS::SHAREDMEM_CLASS()   // Constructor
{
   el = new GLOB_MEM;
   el-&gt;length = 0;
}

SHAREDMEM_CLASS::~SHAREDMEM_CLASS()   // Destructor
{
   el-&gt;length = 0;
   delete el;
}

SHAREDMEM_CLASS::SHAREDMEM_CLASS(const SHAREDMEM_CLASS &amp;copyin)   // Copy constructor to handle pass by value.
{ 
   el = new GLOB_MEM;
   el-&gt;length = copyin.el-&gt;length;
   el-&gt;length = copyin.el-&gt;length;

}
</code></pre>
<p>hm kann es sein das beim copy const einfach noch der sockaddr fehlt??<br />
also der fehler zeigt sich folgermaßen, ich bekommen eine adressen von recv rein, mit IP und Port diese übernimmt auch der sharedbuff, jedoch beim push.back wird diese Daten nicht übernommen, sondern die Werte die vor der initialisierung von sockaddr vorhander sind , sprich sharedbuff_temp-&gt;el-&gt;Sender vor dem zuweisen sowas wie (in hex) ip: cdcdcdcd und port: 52515, dann weise sharedbuff_temp neue daten z.b. IP: c0232... und port: 4775. Diese werte hat sharedbuff_temp dann auch, dann kommt das push_back. aber im element in der liste sind die &quot;falschen werte&quot; cdcdcdc unf 52515 drinne und nicht c0232... und 4775.</p>
<p>Gruß hoffe ihr könnt helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917017</guid><dc:creator><![CDATA[greenghecco]]></dc:creator><pubDate>Thu, 24 Jun 2010 20:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to STL push back funkioniert nicht. on Thu, 24 Jun 2010 21:19:05 GMT]]></title><description><![CDATA[<p>also danke für den hinweis mit dem cpy const. es lag daran das sender nicht mitkopiert wurde. <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/1917025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917025</guid><dc:creator><![CDATA[greenghecco]]></dc:creator><pubDate>Thu, 24 Jun 2010 21:19:05 GMT</pubDate></item><item><title><![CDATA[Reply to STL push back funkioniert nicht. on Thu, 24 Jun 2010 21:19:32 GMT]]></title><description><![CDATA[<p>Den Zuweisungsoperator solltest du auch gleich definieren (oder verbieten), sonst läufst du früher oder später nochmals ins genau gleiche Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1917026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917026</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 24 Jun 2010 21:19:32 GMT</pubDate></item><item><title><![CDATA[Reply to STL push back funkioniert nicht. on Fri, 25 Jun 2010 07:37:24 GMT]]></title><description><![CDATA[<p>... das dynamisch erzeugte Objekt brauchst du ebenfalls nicht, du kommst da prima mit Stackvariablen aus.</p>
<pre><code class="language-cpp">//....
rcv = recvfrom(*sock,buffer,sizeof buffer,0,(SOCKADDR*)&amp;UDPSender,&amp;UDPSenderLen);
//....
SHAREDMEM_CLASS sharedbuff_temp;

sharedbuff_temp.el-&gt;Sender=UDPSender;
sharedbuff_temp.el-&gt;length=UDPSenderLen;

ItemList.push_back (sharedbuff_temp);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1917100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1917100</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 25 Jun 2010 07:37:24 GMT</pubDate></item></channel></rss>