<?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[void* Typ testen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>in der WinAPI kann man Controls void* Meta Daten hinzufügen. Ich habe nun 2 structs Foo und Bar und adde einer Liste nun ab und zu diese Structs als Meta Daten (also in etwa addMetaData(&amp;foo);</p>
<p>Jetzt lese ich die Meta Daten so:</p>
<pre><code class="language-cpp">void* p = getMetaData(index); // geht nicht anders! Die WinAPI liefert immer void*
</code></pre>
<p>Wie weiß ich nun, ob p auf ein Foo oder Bar zeigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288605/void-typ-testen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 20:30:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288605.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Jun 2011 19:58:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to void* Typ testen? on Sun, 19 Jun 2011 19:58:46 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in der WinAPI kann man Controls void* Meta Daten hinzufügen. Ich habe nun 2 structs Foo und Bar und adde einer Liste nun ab und zu diese Structs als Meta Daten (also in etwa addMetaData(&amp;foo);</p>
<p>Jetzt lese ich die Meta Daten so:</p>
<pre><code class="language-cpp">void* p = getMetaData(index); // geht nicht anders! Die WinAPI liefert immer void*
</code></pre>
<p>Wie weiß ich nun, ob p auf ein Foo oder Bar zeigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080811</guid><dc:creator><![CDATA[WinApiUser]]></dc:creator><pubDate>Sun, 19 Jun 2011 19:58:46 GMT</pubDate></item><item><title><![CDATA[Reply to void* Typ testen? on Sun, 19 Jun 2011 20:06:55 GMT]]></title><description><![CDATA[<p>void-Zeiger sind wie eine Schachtel Pralinen, man weiß nie was man bekommt.</p>
<p>Moment, falscher Film...</p>
<p>Dann musst du eben irgendwie mit übergeben, was da kommt. Du kannst dir z.B. an die erste Stelle einen char schreiben, 'F' bedeutet, dahinter steht ein Foo, 'B' bedeutet, dahinter kommt ein Bar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080815</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 19 Jun 2011 20:06:55 GMT</pubDate></item><item><title><![CDATA[Reply to void* Typ testen? on Mon, 20 Jun 2011 02:02:42 GMT]]></title><description><![CDATA[<p>Die saubere Variante wäre Vererbung zu verwenden:</p>
<pre><code class="language-cpp">enum MetaDataType
{
    MetaDataType_Foo,
    MetaDataType_Bar,
};

struct MetaDataBase
{
    MetaDataType type;
};

struct Foo : MetaDataBase { ... };
struct Bar : MetaDataBase { ... };

void funfunfun()
{
    Foo* foo = ...;
    setMetaData(static_cast&lt;MetaDataBase*&gt;(foo));
}

void morefun()
{
    MetaDataBase* md = static_cast&lt;MetaDataBase*&gt;(getMetaData());
    if (md-&gt;type == MetaDataType_Foo)
    {
        Foo* foo = static_cast&lt;Foo*&gt;(mi);
        // ...
    }
    else if (md-&gt;type == MetaDataType_Bar)
    {
        Bar* bar = static_cast&lt;Bar*&gt;(mi);
        // ...
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2080874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080874</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 20 Jun 2011 02:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to void* Typ testen? on Sun, 19 Jun 2011 22:58:38 GMT]]></title><description><![CDATA[<p>Oder wenns geht noch besser:</p>
<pre><code class="language-cpp">class Metadata
{
public:
  virtual void doWhateverYouWannaDo() = 0;
};

class Foo : public Metadata
{
public:
  void doWhateverYouWannaDo() {...}
};

class Bar : public Metadata
{
public:
  void doWhateverYouWannaDo() {...}
};

void morefun()
{
  Metadata* md = static_cast&lt;Metadata*&gt;(getMetaData());
  md-&gt;doWhateverYouWannaDo();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2080882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080882</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sun, 19 Jun 2011 22:58:38 GMT</pubDate></item><item><title><![CDATA[Reply to void* Typ testen? on Mon, 20 Jun 2011 02:03:05 GMT]]></title><description><![CDATA[<p>Jupp, das wäre noch besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080895</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 20 Jun 2011 02:03:05 GMT</pubDate></item><item><title><![CDATA[Reply to void* Typ testen? on Mon, 20 Jun 2011 04:02:27 GMT]]></title><description><![CDATA[<p>Aber zurück zur Frage: Füge beiden Strukturen doch magische Zahlen hinzu, dann kannst Du beide voneinander identifizieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080897</guid><dc:creator><![CDATA[~void*]]></dc:creator><pubDate>Mon, 20 Jun 2011 04:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to void* Typ testen? on Mon, 20 Jun 2011 10:29:17 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>void-Zeiger sind wie eine Schachtel Pralinen, man weiß nie was man bekommt.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> void-Zeiger sind das Leben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080997</guid><dc:creator><![CDATA[ForrestGump]]></dc:creator><pubDate>Mon, 20 Jun 2011 10:29:17 GMT</pubDate></item><item><title><![CDATA[Reply to void* Typ testen? on Mon, 20 Jun 2011 10:32:01 GMT]]></title><description><![CDATA[<p>ForrestGump schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>void-Zeiger sind wie eine Schachtel Pralinen, man weiß nie was man bekommt.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> void-Zeiger sind das Leben? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p>Bevor Beschwerden kommen...</p>
<p>Ich weiß, dass man nicht folgern darf</p>
<pre><code>A =&gt; C
B =&gt; C
------
A == B
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2080998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080998</guid><dc:creator><![CDATA[ForrestGump]]></dc:creator><pubDate>Mon, 20 Jun 2011 10:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to void* Typ testen? on Mon, 20 Jun 2011 11:54:59 GMT]]></title><description><![CDATA[<p>~void* schrieb:</p>
<blockquote>
<p>Aber zurück zur Frage: Füge beiden Strukturen doch magische Zahlen hinzu, dann kannst Du beide voneinander identifizieren.</p>
</blockquote>
<p>Zurück von wo? Von unserem Ausflug zu &quot;wie man es richtig machen würde&quot;?<br />
Ja, wenn du meinst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2081054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2081054</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 20 Jun 2011 11:54:59 GMT</pubDate></item></channel></rss>