<?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[Pointer Datentyp]]></title><description><![CDATA[<p>Mal ne dumme Frage:<br />
Nehmen wir mal an, ich muss einen Pointer speichern, der auf zwei unterschiedliche Klassen zeigen kann? Welchen Datentyp nehm ich für den Pointer? Ein WORD?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148743/pointer-datentyp</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 00:41:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148743.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 May 2006 07:50:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 07:50:22 GMT]]></title><description><![CDATA[<p>Mal ne dumme Frage:<br />
Nehmen wir mal an, ich muss einen Pointer speichern, der auf zwei unterschiedliche Klassen zeigen kann? Welchen Datentyp nehm ich für den Pointer? Ein WORD?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1067827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1067827</guid><dc:creator><![CDATA[Nixblicker]]></dc:creator><pubDate>Tue, 30 May 2006 07:50:22 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 07:54:23 GMT]]></title><description><![CDATA[<p>Wenn die eine Klasse von der anderen Abgeleitet ist, dann nimmst du die Parent Klasse. Wenn beide Klassen von einer anderen Klasse abgeleitet werden, dann nimmst du diese. Im schlimmsten Fall bleibt noch</p>
<pre><code class="language-cpp">void* pointer;
</code></pre>
<p>, das kannst du mit jedem Pointer machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1067829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1067829</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 30 May 2006 07:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 08:01:58 GMT]]></title><description><![CDATA[<p>Hier ein Beispiel für die Benutzung eines Pointers auf die Basisklasse:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class tier
{
public:
    virtual void gibLaut() = 0;
};

class katze : public tier
{
public:
    void gibLaut() { cout &lt;&lt; &quot;miau&quot; &lt;&lt; endl; }
};

class hund : public tier
{
public:
    void gibLaut() { cout &lt;&lt; &quot;wau wau&quot; &lt;&lt; endl; }
};

int main()
{
    hund h;
    katze k;
    tier *t;//Pointer auf die Basisklasse tier

    t = &amp;k;//Katzenadresse zuweisen
    t-&gt;gibLaut();

    t = &amp;h;//Hundeadresse zuweisen
    t-&gt;gibLaut();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1067835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1067835</guid><dc:creator><![CDATA[schorsch code]]></dc:creator><pubDate>Tue, 30 May 2006 08:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 08:02:28 GMT]]></title><description><![CDATA[<p>Ich kann also nicht sagen, dass der Pointer einfach 16 Bit lang ist (wenn es denn so sein sollte) und er einfach als WORD nicht konvertiert werden soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1067836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1067836</guid><dc:creator><![CDATA[Nixblicker]]></dc:creator><pubDate>Tue, 30 May 2006 08:02:28 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 08:09:39 GMT]]></title><description><![CDATA[<p>OK, ich bin grad fündig geworden und hab festgestellt, dass ein Pointer auf 32-Bit-systemen 4 Byte groß ist. Dann werd ichs mal mit dem void* versuchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1067838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1067838</guid><dc:creator><![CDATA[Nixblicker]]></dc:creator><pubDate>Tue, 30 May 2006 08:09:39 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 09:33:37 GMT]]></title><description><![CDATA[<p>Jetzt hab ich aber doch nochmal eine Frage: Was passiert, wenn ich einen void* habe, der eigentlich auf eine Instanz der Klasse CTier zeigt und in einen void* gecastet wurde, und ich mache jetzt darauf ein delete?<br />
Löscht er mir das Tier?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1067894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1067894</guid><dc:creator><![CDATA[Nixblicker]]></dc:creator><pubDate>Tue, 30 May 2006 09:33:37 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 09:41:26 GMT]]></title><description><![CDATA[<p>Nein, solange du ihn nicht wieder zurückcastest, dürfte er nur den Speicher für das Objekt selber freigeben (wenn du im CTier dynamischen Speicher verwendest, ist der verloren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1067899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1067899</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 30 May 2006 09:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 12:22:52 GMT]]></title><description><![CDATA[<p>Nixblicker schrieb:</p>
<blockquote>
<p>Jetzt hab ich aber doch nochmal eine Frage: Was passiert, wenn ich einen void* habe, der eigentlich auf eine Instanz der Klasse CTier zeigt und in einen void* gecastet wurde, und ich mache jetzt darauf ein delete?<br />
Löscht er mir das Tier?</p>
</blockquote>
<p>delete auf einen void* zeiger ist immer undefiniertes verhalten (auch wenn einige compiler dafür nicht mal ne warnung übrig haben). das zeigerargument muss vom selben typ sein wie der, der von new geliefert wurde (und ein new void geht ja nicht), oder aber ein zeiger auf eine basisklasse des erzeugten objekts, sofern diese klasse einen virtuellen destruktor hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1068030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1068030</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 30 May 2006 12:22:52 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 12:46:26 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>delete auf einen void* zeiger ist immer undefiniertes verhalten (auch wenn einige compiler dafür nicht mal ne warnung übrig haben). [...] (und ein new void geht ja nicht)</p>
</blockquote>
<p>Genau dazu wollte ich eigentlich gerade noch nachfragen: new void geht tatsächlich nirgendwo, delete void gibt aber nichtmal beim so hoch gelobten VC++ 8 einen Laut. Kurz bevor ich die Frage abgeschickt hatte, hab ich's mir selbst durch folgendes erklärt:</p>
<pre><code class="language-cpp">void *x = new int;
delete x;
</code></pre>
<p>Also der einzige Fall wo nicht zerstört, sondern nur freigegeben wird (alle PODs) - ist das dann analog zu free(void*) oder nach wie vor undefiniert? Rein vom ersten Blick tut es offenbar das was es tun soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1068049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1068049</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 30 May 2006 12:46:26 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 13:19:18 GMT]]></title><description><![CDATA[<p>Auch wenn in den Augen von ansi c++ nen delete aufn void * boese ist, die heap(freestore)manager kennen die zeiger und die dazugoehorige anzahl der bytes die reserviert wurden. (new und delete auf PODs iss eh meist auf malloc und free gemappt)</p>
<p>Damit ist das verhalten implementationsabhaengig, kann gut gehen(windows), muss aber nicht.</p>
<p>Zu deutsch: vermeid es einfach !</p>
<p>void * in C++ sollte soweiso mehrmals gründlich hinterfragt werden.</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1068076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1068076</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Tue, 30 May 2006 13:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer Datentyp on Tue, 30 May 2006 13:29:50 GMT]]></title><description><![CDATA[<p>im prinzip ist diese definition ohnehin schwer verständlich. schließlich gibt es nur eine globale überladung für operator new und delete für alle typen ohne klassen-spezifischen operator. und operator delete hat keinen weiteren parameter - dieser operator kann also gar nicht wisssen, auf welchen typ er angewendet wird. so gesehen wird eine delete auf void* vermutlich bei allen typen ohne eigenen operator und mit trivialem destruktor funktionieren - im prinzip :). wer es typsicher brauch, muss halt einen deleter a la shared_ptr mitführen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1068087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1068087</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 30 May 2006 13:29:50 GMT</pubDate></item></channel></rss>