<?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[Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit)]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne wissen, wie ich werend der Laufzeit Prüfen kann, ob eine Classe einen bestimmten Member, bzw. Memberfunktion hat, aka:</p>
<pre><code class="language-cpp">class base {
  public:
     void funktion();
};

class klasse : public base {
  public:
     int nichts;
};

klasse *test = new klasse;

if ( ???? test-&gt;neue_funktion ???? ) test-&gt;neue_funktion();
else test-&gt;funktion();

delete test;
</code></pre>
<p>Ich weiß das es geht, ich habe das vor langem mal gemacht, kp mehr wie.</p>
<p>Um genauer zu sein, wird ein Zeiger in die WindowsProcedur mit übergeben, dieser via dynamic_cast auf die base Klasse gecasted, dann wird überprüft, ob die Klasse einen Member Namens (zB) void OnMouseMoveOver() besitzt, wenn ja, aufrufen.</p>
<p>Danke im V-sterne-oraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171371/prüfen-ob-eine-classe-einen-bestimmten-member-hat-laufzeit</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 11:55:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171371.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Jan 2007 19:18:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Wed, 24 Jan 2007 19:18:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne wissen, wie ich werend der Laufzeit Prüfen kann, ob eine Classe einen bestimmten Member, bzw. Memberfunktion hat, aka:</p>
<pre><code class="language-cpp">class base {
  public:
     void funktion();
};

class klasse : public base {
  public:
     int nichts;
};

klasse *test = new klasse;

if ( ???? test-&gt;neue_funktion ???? ) test-&gt;neue_funktion();
else test-&gt;funktion();

delete test;
</code></pre>
<p>Ich weiß das es geht, ich habe das vor langem mal gemacht, kp mehr wie.</p>
<p>Um genauer zu sein, wird ein Zeiger in die WindowsProcedur mit übergeben, dieser via dynamic_cast auf die base Klasse gecasted, dann wird überprüft, ob die Klasse einen Member Namens (zB) void OnMouseMoveOver() besitzt, wenn ja, aufrufen.</p>
<p>Danke im V-sterne-oraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216303</guid><dc:creator><![CDATA[MalFragen]]></dc:creator><pubDate>Wed, 24 Jan 2007 19:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Wed, 24 Jan 2007 19:23:10 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>MalFragen schrieb:</p>
<blockquote>
<p>V-sterne-oraus</p>
</blockquote>
<p>Hää <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="😕"
    /> <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>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216306</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 24 Jan 2007 19:23:10 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Wed, 24 Jan 2007 19:35:55 GMT]]></title><description><![CDATA[<p>wenn man v o r a u s normal schreibt wird es durch * ersetzt.<br />
also: schon mal danke im ******.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216320</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Wed, 24 Jan 2007 19:35:55 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Wed, 24 Jan 2007 19:45:10 GMT]]></title><description><![CDATA[<p>DrakoXP schrieb:</p>
<blockquote>
<p>wenn man v o r a u s normal schreibt wird es durch * ersetzt.<br />
also: schon mal danke im ******.</p>
</blockquote>
<p>Nö, wenn man es falsch schreibt, kommen Sterne, da viele meinen, das man es mit 2 R Schreibt.</p>
<p>Aber das ist jetzt auch egal, war ja nur nen Gimick, also bitte back to Topic.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216336</guid><dc:creator><![CDATA[MalFragen]]></dc:creator><pubDate>Wed, 24 Jan 2007 19:45:10 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Wed, 24 Jan 2007 19:46:48 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>DrakoXP schrieb:</p>
<blockquote>
<p>wenn man v o r a u s normal schreibt wird es durch * ersetzt.<br />
also: schon mal danke im ******.</p>
</blockquote>
<p>Da fällt einem nichts mehr ein. <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>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216341</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 24 Jan 2007 19:46:48 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Wed, 24 Jan 2007 20:57:28 GMT]]></title><description><![CDATA[<p>Hi, mir fällt keine Möglichkeit ein um sowas zu testen, außer das ne abgeleitete Klasse diese Memberfunktion hat und du prüfst ob dein Basisklassenzeiger auf ein abgeleitetes Objekt zeigt ...</p>
<p>Trotzdem ist es ziemlich unsauber/unschön/blub dein Vorhaben in nem Design zu haben, da gibts bestimmt ne andere Möglichkeit um dein Vorhaben(?) zu erreichen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216412</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 24 Jan 2007 20:57:28 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Wed, 24 Jan 2007 22:24:24 GMT]]></title><description><![CDATA[<p>C++ kennt keine Reflections, also ist es sinnlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216495</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 24 Jan 2007 22:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Wed, 24 Jan 2007 22:45:26 GMT]]></title><description><![CDATA[<p>Das ist zwar nicht das wonach du gefragt hast, dafür aber ziemlich sicher das was du suchst:</p>
<pre><code class="language-cpp">class base {
  public:
     virtual void funktion() { printf(&quot;base\n&quot;); }
};

class klasse1 : public base {
  public:
     virtual void funktion() { printf(&quot;klasse1\n&quot;); } // eigene &quot;funktion&quot;
};

class klasse2 : public base {}; // verwendet base::funktion
</code></pre>
<p>Wenn du was anderes suchst drück dich genauer aus, da das, was du beschreibst, in C++ nicht möglich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216504</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 24 Jan 2007 22:45:26 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Thu, 25 Jan 2007 15:42:04 GMT]]></title><description><![CDATA[<p>Du könntest höchstens deiner Basisklasse alle mit Funktionszeigern ausstatten (entweder ein Array von FUnktionszeigern oder ein paar einzelne, also ungefähr so:</p>
<pre><code class="language-cpp">typedef void (*procPointer)(void);

class Base
{
    public:
    //Statt jeden Pointer einzeln zu schreiben, könnte man auch ein Array verwenden...
    procPointer OnMouseMoveOver;
    procPointer OnKlick;
    Base() : OnMouseMoveOver(0), OnKlick(0) {}
};

int main()
{
    Base *test = new Base;
    //Setze den Zeiger oder auch nicht...
    if(test-&gt;OnKlick)
    {
        test-&gt;OnKlick();
    }
    return 0;
}
</code></pre>
<p>Irgendwie so. Dann wäre es halt nicht von der speziellen Klasse, sondern von jeder Instanz abhängig, ob die bestimmte Methode implementiert ist oder nicht... Kann sein, dass dir das hilft, wenn nicht glaube ich auch, dass das was du möchtest in C++ nicht wirklich geht.</p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216986</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Thu, 25 Jan 2007 15:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Fri, 26 Jan 2007 09:31:55 GMT]]></title><description><![CDATA[<p>COM unterstutzt sowas, zumindes COM Objecte die IDispatch unterstuetzen, weil genau dafuer ist es da, zur laufzeit die funktionen die ein Object unterstuetzt, aufzuloesen. C++ ist aber eine typisierte Sprache, d.h. der compiler checkt ob es ne funktion gibt, und keine runtime engine.</p>
<p>Also entweder verwendest Mechanismen die dazu gebaut sind (COM Corba), oder entwickelst was eigenes.</p>
<p>Brauchen tut man das schon ansatzweisse, meist im Zusammenhang mit plugins. In C++ geht man meistens aber nicht auf Funktionsebene runter, sondern fasst funktionalitaet zu schnittstellen zusammen, und checkt, ob das Object ne Schnittstelle unterstuetzt (muss man selber bauen).<br />
Meist benutzt man da ne allgemeine Plugin Schnittstelle, die man mit dem Namen der gesuchten Schnittstelle fuettert, und die einem dann nen (untypisierten) zeiger oder null zurueckgibt, je nachdem ob unterstuetzung da ist oder nicht.</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1217392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1217392</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 26 Jan 2007 09:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob eine Classe einen bestimmten Member hat (Laufzeit) on Fri, 26 Jan 2007 09:39:24 GMT]]></title><description><![CDATA[<p>doppel Post ....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1217401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1217401</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 26 Jan 2007 09:39:24 GMT</pubDate></item></channel></rss>