<?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[Typ des Pointers ueberpruefen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich moechte pruefen, ob ein Pointer von einem bestimmten Typ ist. Folgendes habe ich dazu gemacht:</p>
<pre><code class="language-cpp">void Test::update(void *sender)
{
  if ( (MyObject*) sender != 0) )
  {
    //DoSomething
  }
}
</code></pre>
<p>Ich moechte in diesem Fall also pruefen, ob sender vom Typ &quot;MyObject&quot; ist.<br />
Egal von welchem Typ das uebergebene Objekt bei &quot;update&quot; ist, die if-Bedingung ist immer true. Warum ist das so? Was mache ich falsch ?</p>
<p>Dankeschoen fuer die Hilfe!<br />
Andy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220816/typ-des-pointers-ueberpruefen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 16:58:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220816.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Aug 2008 13:49:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 13:49:30 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich moechte pruefen, ob ein Pointer von einem bestimmten Typ ist. Folgendes habe ich dazu gemacht:</p>
<pre><code class="language-cpp">void Test::update(void *sender)
{
  if ( (MyObject*) sender != 0) )
  {
    //DoSomething
  }
}
</code></pre>
<p>Ich moechte in diesem Fall also pruefen, ob sender vom Typ &quot;MyObject&quot; ist.<br />
Egal von welchem Typ das uebergebene Objekt bei &quot;update&quot; ist, die if-Bedingung ist immer true. Warum ist das so? Was mache ich falsch ?</p>
<p>Dankeschoen fuer die Hilfe!<br />
Andy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568950</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Thu, 21 Aug 2008 13:49:30 GMT</pubDate></item><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 13:58:54 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>3 Dinge:<br />
1.) dynamic_cast&lt;&gt; kann das prinzipiell aber<br />
2.) die &quot;eingebaute&quot; Laufzeitpolymorphie ist unendlich viel besser als &quot;manuell gebastelte&quot; .<br />
3.) Falls Du daran denkst, C++-Objekte &quot;binär zu transportieren&quot; (über die Leitung oder ein File): Lieber nicht.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568954</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 21 Aug 2008 13:58:54 GMT</pubDate></item><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 13:58:40 GMT]]></title><description><![CDATA[<p>Weil kein dynamic_cast verwendet wird.<br />
Das ist mit ein Grund, warum die C++ casts verwendet werden sollten: Man muss wissen was man tut und was passiert.</p>
<p>Abhilfe für dein Problem würde ein Interface (abstrakte Klasse) mit der Update Methode machen.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568956</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 21 Aug 2008 13:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 14:02:19 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>2.) die &quot;eingebaute&quot; Laufzeitpolymorphie ist unendlich viel besser als &quot;manuell gebastelte&quot; .</p>
</blockquote>
<p>Danke fuer die Antwort, aber das verstehe ich nicht ganz... Welche eingebaute Laufzeitpolymorphie meinst du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568960</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Thu, 21 Aug 2008 14:02:19 GMT</pubDate></item><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 14:12:08 GMT]]></title><description><![CDATA[<p>Sowas in etwa:</p>
<pre><code class="language-cpp">//interface
struct Updatable
{
    virtual void update() = 0;
};

//irgendwas, das geupdated werden kann
class SenderType_A : public Updatable
{
public:
    //...
    void update()
    {
        std::cout &lt;&lt; &quot;Update A\n&quot;;
        //...
    }
private:
    //...
};

//irgendwas anderes, das geupdated werden kann
class SenderType_B : public Updatable
{
public:
    //...
    void update()
    {
        std::cout &lt;&lt; &quot;Update B\n&quot;;
        //...
    }
private:
    //...
};

//eine Funktion die updated
void test(Updatable&amp; objectToUpdate)
{
    //...
    objectToUpdate.update();
    //...
}

int main()
{   
    //ein updatebares Objekt
    SenderType_A sender_A;
    //ein anderes updatebares Objekt
    SenderType_B sender_B;

    //beide updaten
    test(sender_A);
    test(sender_B);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1568967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568967</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 21 Aug 2008 14:12:08 GMT</pubDate></item><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 14:23:07 GMT]]></title><description><![CDATA[<p>... oder sowas (habe grob deine Nomenklatur und Semantik übernommen - sei sie nun ideal oder nicht):</p>
<pre><code class="language-cpp">struct MyObject { // ist einfach eine &quot;public-class&quot; (bin faul)
   virtual void DoSomething() = 0; // MUSS für Benutzung überschrieben werden
   virtual ~MyObject() {} // Dtor sollte bei &quot;abzuleitenden Klassen&quot; virtual sein.
};

struct MySpecialObject1 : MyObject {
   void DoSomething() { cout &lt;&lt; &quot;mache dies\n&quot;; }
};

struct MySpecialObject2 : MyObject {
   void DoSomething() { cout &lt;&lt; &quot;mache das\n&quot;; }
};

struct Test {
   void update(MyObject *sender) {   sender-&gt;DoSomething();  }
};

int main() {
   Test t;
   MySpecialObject1 mo1;
   MySpecialObject2 mo2;

   t.update(&amp;mo1); // =&gt; &quot;mache dies&quot;
   t.update(&amp;mo2); // =&gt; &quot;mache das&quot;
...
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568971</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 21 Aug 2008 14:23:07 GMT</pubDate></item><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 14:20:41 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Sollten die &quot;SpecialObjects&quot; nicht von MyObject erben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568976</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 21 Aug 2008 14:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 14:22:25 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Sollten die &quot;SpecialObjects&quot; nicht von MyObject erben?</p>
</blockquote>
<p>Das Testament wird momentan noch von &quot;Test&quot; angefochten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568980</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 21 Aug 2008 14:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to Typ des Pointers ueberpruefen on Thu, 21 Aug 2008 14:26:22 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Sollten die &quot;SpecialObjects&quot; nicht von MyObject erben?</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> <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="👍"
    /><br />
Natürlich!</p>
<p>Danke,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1568985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1568985</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 21 Aug 2008 14:26:22 GMT</pubDate></item></channel></rss>