<?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[CString* als void* übergeben und zerstören]]></title><description><![CDATA[<p>Ich habe ein Problem mit einem CString-Zeiger. Ich übergebe diesen an eine Methode als void-Zeiger, da auch int-Zeiger an diese Methode übergeben werden können sollen.</p>
<p>Nun ist es so, dass die Methode diese Zeiger auch löscht bzw. den reservierten Platz wieder freigibt. Beim int klappt das, wenn ich jedoch einen CString übergebe bekomme ich &quot;Dumping objects -&gt;&quot; :(.</p>
<p>Der Code sieht zusammengefasst so aus:</p>
<pre><code class="language-cpp">void CListe::Add(void* pZeiger) {
  // Hier wird der Zeiger in eine Liste hinzugefügt
  m_Liste.insert(m_Liste-&gt;begin(), pZeiger);
}

CListe::~CListe() {
  // Alle Elemente in der Liste zerstören
  ...
    delete m_Liste[i];
  ...
}

// So klappt es
int* pInt = new int(5);
Add(pInt);

// Das klappt nicht bzw. führt zu &quot;Dumping objects -&gt;&quot;
CString* pString = new CString(&quot;Test&quot;);
Add(pString);
</code></pre>
<p>Geht das nicht mit Objekten, weil der Voidzeiger nicht die nötigen Informationen hat, wie er den CString zu zerstören hat? Oder geht das irgendwie bzw. mach ich etwas falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177918/cstring-als-void-übergeben-und-zerstören</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Apr 2026 12:05:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177918.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Apr 2007 11:49:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 11:49:47 GMT]]></title><description><![CDATA[<p>Ich habe ein Problem mit einem CString-Zeiger. Ich übergebe diesen an eine Methode als void-Zeiger, da auch int-Zeiger an diese Methode übergeben werden können sollen.</p>
<p>Nun ist es so, dass die Methode diese Zeiger auch löscht bzw. den reservierten Platz wieder freigibt. Beim int klappt das, wenn ich jedoch einen CString übergebe bekomme ich &quot;Dumping objects -&gt;&quot; :(.</p>
<p>Der Code sieht zusammengefasst so aus:</p>
<pre><code class="language-cpp">void CListe::Add(void* pZeiger) {
  // Hier wird der Zeiger in eine Liste hinzugefügt
  m_Liste.insert(m_Liste-&gt;begin(), pZeiger);
}

CListe::~CListe() {
  // Alle Elemente in der Liste zerstören
  ...
    delete m_Liste[i];
  ...
}

// So klappt es
int* pInt = new int(5);
Add(pInt);

// Das klappt nicht bzw. führt zu &quot;Dumping objects -&gt;&quot;
CString* pString = new CString(&quot;Test&quot;);
Add(pString);
</code></pre>
<p>Geht das nicht mit Objekten, weil der Voidzeiger nicht die nötigen Informationen hat, wie er den CString zu zerstören hat? Oder geht das irgendwie bzw. mach ich etwas falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259970</guid><dc:creator><![CDATA[E_Rik]]></dc:creator><pubDate>Thu, 05 Apr 2007 11:49:47 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 12:21:46 GMT]]></title><description><![CDATA[<p>Der Pointer kann nicht wissen ob er auf ein CString Objekt oder einen int zeigt.<br />
Beim Zerstören müsstest du dann erstmal rausfinden, welcher Zeiger auf was zeigt und dann entsprechend zerstören. Sonst wird einfach nur ein 32Bit irgendwas vernichtet.</p>
<p>Pseudocode:</p>
<pre><code class="language-cpp">if (isteinint)
    delete (int*)pInt;
if (istCString)
    delete (CString*)pString;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1260002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260002</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Thu, 05 Apr 2007 12:21:46 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 12:23:03 GMT]]></title><description><![CDATA[<p>Davon abgesehen ist das design-technisch totaler Quatsch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260004</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Thu, 05 Apr 2007 12:23:03 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 12:33:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Davon abgesehen ist das design-technisch totaler Quatsch...</p>
</blockquote>
<p>Ich bin für jegliche design-technische Ideen offen <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/1260013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260013</guid><dc:creator><![CDATA[E_Rik]]></dc:creator><pubDate>Thu, 05 Apr 2007 12:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 12:38:32 GMT]]></title><description><![CDATA[<p>Ich habe keine Ahnung, was du machen willst <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/1260018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260018</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Thu, 05 Apr 2007 12:38:32 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 12:40:57 GMT]]></title><description><![CDATA[<p>Beliebige Daten (bzw. Pointer) in einem &quot;Sammelcontainer&quot; ablegen :). Beim zerstören des Containers werden dann auch die Daten gelöscht. Dabei weiß ich nicht, um welche Daten es sich handelt. <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/1260024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260024</guid><dc:creator><![CDATA[E_Rik]]></dc:creator><pubDate>Thu, 05 Apr 2007 12:40:57 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 12:53:53 GMT]]></title><description><![CDATA[<p>Kann man das auch durcheinanderwürfeln?</p>
<p>Also:</p>
<pre><code class="language-cpp">cont.Add(3);
cont.Add(&quot;lalala&quot;);
</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/1260036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260036</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 05 Apr 2007 12:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 12:57:00 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/36658">@erik</a>:<br />
Was ist der Sinn von soetwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260041</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Thu, 05 Apr 2007 12:57:00 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 13:04:35 GMT]]></title><description><![CDATA[<p>Zum Ablegen beliebiger Allesmögliche-Pointer gibt es übrigens auch die Klasse CObArray <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="😉"
    /> Aber dEUs hat Recht: Was willst du damit überhaupt erreichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260055</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Thu, 05 Apr 2007 13:04:35 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 13:10:43 GMT]]></title><description><![CDATA[<p>Der Sinn ist schnell erklärt. Austausch von Objekten über eine Datenlagerstelle. Zwei Prozesse ändern Objekte ab, andere Prozesse lesen die Daten die sie interessieren aus. Alle Daten sollen zentral gelagert werden, so dass auch spätere Programmodule (lediglich über den Header) diese Daten in der zentralen Ablage auslesen oder manipulieren können.</p>
<p>Ich habs jetzt ein wenig anders gelöst und es funktioniert :). Ich hab einfach eine Klasse definiert die ich CDaten genannt habe. Nun muss jedes Objekt - welches in den Container soll - von einer Klasse sein, die von CDaten geerbt hat. Der Destruktor von CDaten ist natürlich virtual :).</p>
<p>Für CString hab ich dann gleich ne Klasse geschrieben <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>
<pre><code class="language-cpp">class CDaten
{
public:
	CDaten() {};
	virtual ~CDaten() {};
}

class CSTRDaten : public CDaten
{
public:
	CSTRDaten (CString sVal) { m_sVal = sVal; };
	~CSTRDaten () {};
	CString m_sVal;
};
</code></pre>
<p>Die lesende Schnittstelle liest nun die Daten aus dem &quot;zentralen Lager&quot; aus und castet diese mit einem dynamic_cast. Der Lesende weiß ja was für Daten er von dem Lager erwartet :).</p>
<p>Ich weiß nicht ob die Lösung jetzt besser ist, aber ich hoffe es doch :). Ich hoffe ich habe euch mit meiner Idee nicht zu lange aufgehalten :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260061</guid><dc:creator><![CDATA[E_Rik]]></dc:creator><pubDate>Thu, 05 Apr 2007 13:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 13:12:20 GMT]]></title><description><![CDATA[<p>Und so funktioniert auch das erwähnte CObArray. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260063</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 05 Apr 2007 13:12:20 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 13:17:17 GMT]]></title><description><![CDATA[<blockquote>
<p>Und so funktioniert auch das erwähnte CObArray...</p>
</blockquote>
<p>... da frag ich mich jetzt: Ist das gut oder schlecht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260068</guid><dc:creator><![CDATA[E_Rik]]></dc:creator><pubDate>Thu, 05 Apr 2007 13:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 13:22:09 GMT]]></title><description><![CDATA[<p>Gute Frage. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Nur für den Fall, dass du das Rad nicht neu erfinden willst/sollst, solltest du dich damit genauer beschäftigen. <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/1260073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260073</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 05 Apr 2007 13:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 13:52:37 GMT]]></title><description><![CDATA[<blockquote>
<p>Nur für den Fall, dass du das Rad nicht neu erfinden willst/sollst, solltest du dich damit genauer beschäftigen.</p>
</blockquote>
<p>Werde ich auch machen :). Danke auf jedenfall für den Hinweis das es das schon gibt ;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1260120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260120</guid><dc:creator><![CDATA[E_Rik]]></dc:creator><pubDate>Thu, 05 Apr 2007 13:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to CString* als void* übergeben und zerstören on Thu, 05 Apr 2007 19:23:46 GMT]]></title><description><![CDATA[<p>Mein Tip: verwende eine map (z.B. std::map&lt;&gt;) die als Value boost::shared_ptr<a href="boost::any" rel="nofollow">boost::any</a> hat. Dadurch bekommst du auch automatisch type safety beim auslesen.</p>
<p>Oder aber stecke deine Objekte in einen selbst geschriebenen Wrapper, ala so:</p>
<pre><code class="language-cpp">class AnyThing
{
public:
    virtual ~AnyThing() {}
};

template &lt;class T&gt; class Thing : public AnyThing
{
public:
    Thing(T const&amp; t)
        : m_t(t)
    {}

    T&amp; Get() { return m_t; }
    T const&amp; Get() const { return m_t; }

private:
    T m_t;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1260358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1260358</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 05 Apr 2007 19:23:46 GMT</pubDate></item></channel></rss>