<?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[static members vergleichen?]]></title><description><![CDATA[<p>hi</p>
<p>wie kann ich static members in vererbten Klassen vergleichen? Wenn ich das so mach stimmt das Ergebnis nicht:</p>
<pre><code class="language-cpp">class Base
{
     static int ID;
};

class DerivateA : public Base
{
    static int ID;
};

class DerivateB : public Base
{
    static int ID;
};

Base::ID = 0;
DerivateA::ID = 1;
DerivateB::ID = 2;

bool checkType( const Base&amp; a, const Base&amp; b )
{
    return a.ID == b.ID;
}

int main()
{
    DerivateA A;
    Derivateb b;
    if(checkType( A, B );) cout &lt;&lt; &quot;Yes&quot;;
    return 0;
}
</code></pre>
<p>Frohe Weihnachten :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168565/static-members-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 12:10:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168565.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Dec 2006 12:47:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to static members vergleichen? on Sun, 24 Dec 2006 12:47:48 GMT]]></title><description><![CDATA[<p>hi</p>
<p>wie kann ich static members in vererbten Klassen vergleichen? Wenn ich das so mach stimmt das Ergebnis nicht:</p>
<pre><code class="language-cpp">class Base
{
     static int ID;
};

class DerivateA : public Base
{
    static int ID;
};

class DerivateB : public Base
{
    static int ID;
};

Base::ID = 0;
DerivateA::ID = 1;
DerivateB::ID = 2;

bool checkType( const Base&amp; a, const Base&amp; b )
{
    return a.ID == b.ID;
}

int main()
{
    DerivateA A;
    Derivateb b;
    if(checkType( A, B );) cout &lt;&lt; &quot;Yes&quot;;
    return 0;
}
</code></pre>
<p>Frohe Weihnachten :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1197363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1197363</guid><dc:creator><![CDATA[nuuuub]]></dc:creator><pubDate>Sun, 24 Dec 2006 12:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to static members vergleichen? on Sun, 24 Dec 2006 12:55:57 GMT]]></title><description><![CDATA[<p>Lass mich raten: Es wird &quot;Yes&quot; ausgegeben, obwohl es nicht sollte?</p>
<p>Was du brauchst ist eine Funktion 'getID', die die ID der Instanz zurück gibt. Diese deklarierst du als virtuelle (eventuell sogar abstrakte) Funktion in der Basisklasse und überschreibst sie dann in den abgeleiteten Klassen. Anstatt nun direkt auf die ID-Variable zuzugreifen nutzt du in deiner 'checkType'-Funktion die Funktion 'getID'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1197367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1197367</guid><dc:creator><![CDATA[Der Meister]]></dc:creator><pubDate>Sun, 24 Dec 2006 12:55:57 GMT</pubDate></item><item><title><![CDATA[Reply to static members vergleichen? on Tue, 26 Dec 2006 00:17:28 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Meisters Antwort ist an sich schon recht gut, aber an dem Beispiel stoße ich ich ein wenig daran, dass Du scheinbar versuchst, explizit den Typ herauszufinden ... was man sehr viel seltender braucht, als man als Anfänger so meint - und dafür eine Menge Fallen bereithält.<br />
Meisters Weg deutet darauf hin, wie man (oft) programmieren kann. ohne sich auf diesen steinigen Weg zu begeben (Stichwort: &quot;virtuelle Funktionen&quot;)...</p>
<p>Gruß,</p>
<p>Simon2.</p>
<p>NACHTRAG: VERF***TE ERGO-TASTATUR MEINES VATERS !!!! (dauert ewig und dauernd Typos drin) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1197854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1197854</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 26 Dec 2006 00:17:28 GMT</pubDate></item><item><title><![CDATA[Reply to static members vergleichen? on Tue, 26 Dec 2006 18:17:27 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a><br />
Ja, mag sein das man es selten braucht, ich brauchs aber unbedingt.<br />
Wie würdest du es denn machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198133</guid><dc:creator><![CDATA[nuuuuuuuuub]]></dc:creator><pubDate>Tue, 26 Dec 2006 18:17:27 GMT</pubDate></item><item><title><![CDATA[Reply to static members vergleichen? on Tue, 26 Dec 2006 19:16:54 GMT]]></title><description><![CDATA[<p>Eigentlich geht nur die Methode mit virtuellen Funktionen. Wenn aber die Vererbungshierarchie nur &quot;Beiwerk&quot; ist, kannst du es auch mit Templates realisieren:</p>
<pre><code class="language-cpp">template &lt;typename T1, typename T2&gt;
bool checkType (const T1&amp;, const T2&amp;)
{
    return T1::ID == T2::ID;
}
</code></pre>
<p>Da ich das nicht annehme, kannst du es auch mit RTTI probieren:</p>
<pre><code class="language-cpp">bool checkType (const Base&amp; a, const Base&amp; b)
{
    return typeid (a) == typeid (b);
}
</code></pre>
<p>Aber das hat ordentlich Overhead und weist auf einen Designfehler hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198151</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 26 Dec 2006 19:16:54 GMT</pubDate></item><item><title><![CDATA[Reply to static members vergleichen? on Tue, 26 Dec 2006 18:50:24 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Eigentlich geht nur die Methode mit virtuellen Funktionen. Wenn aber die Vererbungshierarchie nur &quot;Beiwerk&quot; ist, kannst du es auch mit Templates realisieren:</p>
</blockquote>
<p>Wie meinst du das &quot;Beiwerk&quot;?</p>
<p>.filmor schrieb:</p>
<blockquote>
<p>Da ich das nicht annehme, kannst du es auch mit RTTI probieren:<br />
Aber das hat ordentlich Overhead und weißt auf einen Designfehler hin.</p>
</blockquote>
<p>Das hatte ich erst, und wegen dem Overhead wollt ichs wegmachen. Aber das Design ist nicht von mir, sondern von Marcus Bäckmann^^<br />
Die Umgebung soll nach bestimmten Tieren abgesucht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198162</guid><dc:creator><![CDATA[nuuuub]]></dc:creator><pubDate>Tue, 26 Dec 2006 18:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to static members vergleichen? on Tue, 26 Dec 2006 19:19:59 GMT]]></title><description><![CDATA[<p>nuuuub schrieb:</p>
<blockquote>
<p>.filmor schrieb:</p>
<blockquote>
<p>Eigentlich geht nur die Methode mit virtuellen Funktionen. Wenn aber die Vererbungshierarchie nur &quot;Beiwerk&quot; ist, kannst du es auch mit Templates realisieren:</p>
</blockquote>
<p>Wie meinst du das &quot;Beiwerk&quot;?</p>
</blockquote>
<p>Vergiss es, das hilft dir nicht weiter.</p>
<p>nuuuub schrieb:</p>
<blockquote>
<p>.filmor schrieb:</p>
<blockquote>
<p>Da ich das nicht annehme, kannst du es auch mit RTTI probieren:<br />
Aber das hat ordentlich Overhead und weißt auf einen Designfehler hin.</p>
</blockquote>
<p>Das hatte ich erst, und wegen dem Overhead wollt ichs wegmachen. Aber das Design ist nicht von mir, sondern von Marcus Bäckmann^^<br />
Die Umgebung soll nach bestimmten Tieren abgesucht werden.</p>
</blockquote>
<p>Es hindert dich niemand daran, das Design zu verbessern. Zeig mehr Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198181</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 26 Dec 2006 19:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to static members vergleichen? on Tue, 26 Dec 2006 19:34:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// class Sheep: public Creature
Creature* Sheep::life_cycle( Neighborhood&amp; neighborhood )
{
	if( is_lifetime_exceeded() )
	{
		neighborhood.clear();
		return new Ground();
	}
	Grass grass;
	neighborhood.erase_ifnot( &amp;grass );
//...

// class IsNotCreatureType (Funktor)
Neighborhood::IsNotCreatureType::IsNotCreatureType( Creature* creature )
:	m_creature( creature )
{

}

bool Neighborhood::IsNotCreatureType::operator()( Neighbor neighbor )
{
	return *( neighbor.second ) != *m_creature;
}

// class Neighborhood
void Neighborhood::erase_ifnot( Creature* creature )
{
	assert( creature != 0 );
	IsNotCreatureType is_not( creature );
	m_neighbors.erase( std::remove_if( m_neighbors.begin(),
									   m_neighbors.end(),
									   is_not ),
					   m_neighbors.end() );
}

//class Creature
bool operator==( const Creature&amp; lhs, const Creature&amp; rhs )
{
	return typeid( lhs ) == typeid( rhs );
	//return lhs.get_id() == rhs.get_id();
       //Hier wollt ich gern optimieren
}

bool operator!=( const Creature&amp; lhs, const Creature&amp; rhs )
{
	return !( lhs == rhs );
}
</code></pre>
<p>Hoff das bringt dir was und das du mir helfen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1198185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1198185</guid><dc:creator><![CDATA[nuuuuub]]></dc:creator><pubDate>Tue, 26 Dec 2006 19:34:49 GMT</pubDate></item></channel></rss>