<?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[Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?!]]></title><description><![CDATA[<p>Ich probiere nun schon 2 Stunden herum aber finde keine Lösung.</p>
<p>Ich habe eine Basisklasse &quot;Baseclass&quot; und eine Subklasse &quot;Subclass&quot;. Wenn ich nun ein Objekt &quot;aObj&quot; der Subklasse erstelle, werden alle Eigenschaften der Basisklasse vererbt.</p>
<p>Gibt es nun eine Möglichkeit abzufragen, ob das Objekt &quot;aObj&quot; ein Kind der Basisklasse ist?</p>
<p>Ich wollte es über typeid lösen, scheint allerdings nicht so richtig zu funktionieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Weiß jemand eine Lösung wie ich in einer Abfrage herausfinden kann, ob die Klasse des Objekts aObj von der Basisklasse &quot;Baseclass&quot; vererbt wurde?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208891/abfrage-objekt-von-einer-bestimmten-basisklasse-vererbt-ist</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 04:06:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208891.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Mar 2008 09:04:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 09:04:51 GMT]]></title><description><![CDATA[<p>Ich probiere nun schon 2 Stunden herum aber finde keine Lösung.</p>
<p>Ich habe eine Basisklasse &quot;Baseclass&quot; und eine Subklasse &quot;Subclass&quot;. Wenn ich nun ein Objekt &quot;aObj&quot; der Subklasse erstelle, werden alle Eigenschaften der Basisklasse vererbt.</p>
<p>Gibt es nun eine Möglichkeit abzufragen, ob das Objekt &quot;aObj&quot; ein Kind der Basisklasse ist?</p>
<p>Ich wollte es über typeid lösen, scheint allerdings nicht so richtig zu funktionieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Weiß jemand eine Lösung wie ich in einer Abfrage herausfinden kann, ob die Klasse des Objekts aObj von der Basisklasse &quot;Baseclass&quot; vererbt wurde?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479438</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Mon, 24 Mar 2008 09:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 09:54:19 GMT]]></title><description><![CDATA[<p>Der compiler wird dir das verraten:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct Base{ void foo(){ std::cout &lt;&lt; &quot;Base::foo() called&quot; &lt;&lt; std::endl;} };
struct Derived : Base{ void bar(){ std::cout &lt;&lt; &quot;Derived::bar() called&quot; &lt;&lt; std::endl; } };
struct Other{ int bar(){ std::cout &lt;&lt; &quot;Other::bar() called&quot; &lt;&lt; std::endl; } };

int main()
{
  // Compiliert
  {
    Derived * d = new Derived();
    Base * b = d;
    b-&gt;foo();
    d-&gt;bar();
  }

  //Fehler
  {
    Other * o = new Other();
    Base * b = o; // Hier &quot;»Other*« kann nicht nach »Base*« in initialization umgewandelt werden&quot;
    b-&gt;foo(); 
    o-&gt;bar();
  }
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1479447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479447</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Mon, 24 Mar 2008 09:54:19 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 10:21:33 GMT]]></title><description><![CDATA[<p>Danke erstmal für die schnelle Antwort.</p>
<p>Ich glaube, dass ich mich vielleicht nicht ganz so toll ausgedrückt habe. Mir ist durchaus klar, dass bei obigen Code der Compiler einen Fehler meldet.</p>
<p>Ich will diesen Vergleich jedoch in eine If-Abfrage einbauen so ca. nach diesem Schema:</p>
<pre><code>Wenn Derived von Base vererbt dann
...
Wenn Derived nicht von Base vererbt dann
...
</code></pre>
<p>Ich habe es wie gesagt über typeid versucht, klappt jedoch nicht so wirklich <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/1479459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479459</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Mon, 24 Mar 2008 10:21:33 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 10:25:51 GMT]]></title><description><![CDATA[<p>Wenn du sowas prüfen musst, dann hast du wahrscheinlich ein Designproblem. Was soll die Aufgabe seion, wo du so eine Prüfung brauchst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479462</guid><dc:creator><![CDATA[ehrlich]]></dc:creator><pubDate>Mon, 24 Mar 2008 10:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 10:36:19 GMT]]></title><description><![CDATA[<p>Ich arbeite an einer SNMP-Library als Schulabschlussprojekt.</p>
<p>Dabei gibt es einen Datentyp namens &quot;Sequence&quot;, was ein Vector für verschiedene Datentypen ist (in meinem Falle mit boost::ptr_vector realisiert).</p>
<p>Beim Setzen von Werten muss ich überprüfen ob die Elemente dieser &quot;Sequence&quot; alle vom Basis-Datentyp &quot;SnmpObject&quot; sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479466</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Mon, 24 Mar 2008 10:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 10:49:38 GMT]]></title><description><![CDATA[<p>Und warum machst du dann diese &quot;Sequence&quot; nicht so, dass sie nur Objecte vom Type &quot;SnmpObject&quot; aufnehmen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479474</guid><dc:creator><![CDATA[ehrlich]]></dc:creator><pubDate>Mon, 24 Mar 2008 10:49:38 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 11:06:16 GMT]]></title><description><![CDATA[<p>Hm, jetzt wo du es sagst fällt mir erst auf, dass ich meinen boost::ptr_vector eh nur für SnmpObject-Objekte bzw. Pointer darauf programmiert habe.</p>
<p>Danke und sry dass ich dafür extra einen neuen Thread geöffnet habe <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/1479485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479485</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Mon, 24 Mar 2008 11:06:16 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 11:28:56 GMT]]></title><description><![CDATA[<p>Ich hab den Artikel nur schnell überflogen, aber für mich klingt das nach<br />
dynamic_cast.</p>
<pre><code class="language-cpp">for(std::vector&lt;BaseClass*&gt;::iterator it = vec.begin(); it != vec.end(); ++it){
    BaseClass* b = (*it);
    if(SubClass *sub = dynamic_cast&lt;SubClass*&gt;(b)){ // falls dies nicht der Falls ist, liefert dynamic_cast 0 und die Bedingung ist nicht erfüllt.
        sub-&gt;doWhatEveryouWant();
    }

}
</code></pre>
<p>btw: Der Code ist ungetestet, sollte aber so in etwa funktionieren.</p>
<p>EDIT: Ach von der Basisklasse... Wurschtelst du denn mit void* rum? Oder besitzt deine Basisklasse ne weitere Basisklasse?<br />
EDIT2: Welcher Typ ist denn deinem Compiler bekannt, wenn du das Abfragen willst. Hast du sowas wie void *myObj;, oder was? Ein bisschen Code wäre hilfreich</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479486</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 24 Mar 2008 11:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 11:07:03 GMT]]></title><description><![CDATA[<p>Du kannst das über SFINAE (natürlich nur zur Compilezeit)erreichen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

struct Base{ void foo(){ std::cout &lt;&lt; &quot;Base::foo() called&quot; &lt;&lt; std::endl;} };
struct Derived : Base{ void bar(){ std::cout &lt;&lt; &quot;Derived::bar() called&quot; &lt;&lt; std::endl; } };
struct Other{ void bar(){ std::cout &lt;&lt; &quot;Other::bar() called&quot; &lt;&lt; std::endl; } };

template&lt;typename T, typename Base&gt;
class IsDerived
{
    private:
        static T* makeTPtr();
        static char test(Base *);
        struct Dummy
        {
             char test[5];
        };
        static Dummy test(...);
    public:
        static bool const value = sizeof(test(makeTPtr())) == sizeof(char);
};

int main()
{
    cout &lt;&lt; IsDerived&lt;Derived, Base&gt;::value &lt;&lt; endl;
    cout &lt;&lt; IsDerived&lt;Other, Base&gt;::value &lt;&lt; endl;
}
</code></pre>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479487</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Mon, 24 Mar 2008 11:07:03 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 11:24:01 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>EDIT: Ach von der Basisklasse... Wurschtelst du denn mit void* rum? Oder besitzt deine Basisklasse ne weitere Basisklasse?</p>
</blockquote>
<p>Also meine Klasse &quot;SnmpObject&quot; ist meine Basisklasse für alle weiteren Klassen. SnmpObject hat auch keine Basisklasse mehr!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479496</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Mon, 24 Mar 2008 11:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 11:36:40 GMT]]></title><description><![CDATA[<p>Dein Problem hat sich ja scheinbar um 12:06:16 erübrigt, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479507</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 24 Mar 2008 11:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 11:54:23 GMT]]></title><description><![CDATA[<p>Ja prinzipiell schon, weil ich unaufmerksam war.<br />
Interessant wäre es trotzdem ob es eine Lösung für meine Frage gibt aber ist nicht mehr so wichtig <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/1479521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479521</guid><dc:creator><![CDATA[SeniiX]]></dc:creator><pubDate>Mon, 24 Mar 2008 11:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to Abfrage:Objekt von einer bestimmten Basisklasse vererbt ist?! on Mon, 24 Mar 2008 12:15:49 GMT]]></title><description><![CDATA[<p>Du gibst der Vererbten Klasse eine Methode vom Typ void, die per referenz in eine Variable true schreibt.<br />
Sollte sie nach dem Aufruf trotzdem False bleiben, ist die Klasse nicht vererbt worden.</p>
<p>SO klappt es zumindest in vielen anderen Sprachen.^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479531</guid><dc:creator><![CDATA[makkurona]]></dc:creator><pubDate>Mon, 24 Mar 2008 12:15:49 GMT</pubDate></item></channel></rss>