<?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[Objekt mit Flag]]></title><description><![CDATA[<p>Hallo!</p>
<p>Sagen wir ich habe eine Klasse Car:</p>
<pre><code class="language-cpp">class Car {
private:
   bool   mIsActive;

public:
  void setActive(bool isActive);
  bool isActive() const;

};
</code></pre>
<p>Dann habe ich noch einen CarManager, der zyklisch alle Autos updated. Allerdings sollen jetzt nur die aktiven Autos geupdated werden. Jetzt frage ich mich, wer für die Prüfung des Cars Flag verantwortlich ist? Soll das der CarManager machen:</p>
<pre><code class="language-cpp">// Variante A
for(int i=0; i &lt; mCars.size(); i++) {
   if(mCars[i]-&gt;isActive();
      mCars[i]-&gt;update();
}
</code></pre>
<p>sprich Cars::update() wird nur für aktive Cars aufgerufen, oder soll das Flag in Cars::update() getestet werden:</p>
<pre><code class="language-cpp">// Variante B
for(int i=0; i &lt; mCars.size(); i++) {
   mCars[i]-&gt;update(); // Wir rufen IMMER update() auf...
}

Car::update() {
   if(!mIsActive)  //... und Car checkt selber, ob es aktiv ist
      return;

   //.. Auto updaten Code
}
</code></pre>
<p>Was ist besser?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297450/objekt-mit-flag</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 11:02:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297450.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Dec 2011 21:22:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekt mit Flag on Wed, 28 Dec 2011 21:22:44 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Sagen wir ich habe eine Klasse Car:</p>
<pre><code class="language-cpp">class Car {
private:
   bool   mIsActive;

public:
  void setActive(bool isActive);
  bool isActive() const;

};
</code></pre>
<p>Dann habe ich noch einen CarManager, der zyklisch alle Autos updated. Allerdings sollen jetzt nur die aktiven Autos geupdated werden. Jetzt frage ich mich, wer für die Prüfung des Cars Flag verantwortlich ist? Soll das der CarManager machen:</p>
<pre><code class="language-cpp">// Variante A
for(int i=0; i &lt; mCars.size(); i++) {
   if(mCars[i]-&gt;isActive();
      mCars[i]-&gt;update();
}
</code></pre>
<p>sprich Cars::update() wird nur für aktive Cars aufgerufen, oder soll das Flag in Cars::update() getestet werden:</p>
<pre><code class="language-cpp">// Variante B
for(int i=0; i &lt; mCars.size(); i++) {
   mCars[i]-&gt;update(); // Wir rufen IMMER update() auf...
}

Car::update() {
   if(!mIsActive)  //... und Car checkt selber, ob es aktiv ist
      return;

   //.. Auto updaten Code
}
</code></pre>
<p>Was ist besser?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2161650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161650</guid><dc:creator><![CDATA[Arrekk]]></dc:creator><pubDate>Wed, 28 Dec 2011 21:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt mit Flag on Wed, 28 Dec 2011 21:30:20 GMT]]></title><description><![CDATA[<p>Kann man so allgemein nicht sagen.<br />
Ich habe hier die leichte die Tendelendenz, es außerhalb zu machen.</p>
<p>Ein isDead im Game wird außerhalb gemacht, weil das auch dafür sorgt, daß die Hauptschleife die toten Objekte aus dem Container löscht.</p>
<p>Wenn so ein isActive typischerweise nur die Inspektion oder ein platter Reifen ist, geht das die Hauptschleife hingegen eher gar nichts an.</p>
<p>ALso ich sage ein klares Jein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2161652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161652</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 28 Dec 2011 21:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt mit Flag on Wed, 28 Dec 2011 21:55:17 GMT]]></title><description><![CDATA[<p>Noch andere Meinungen, Ratschläge?^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2161653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161653</guid><dc:creator><![CDATA[Arrekk]]></dc:creator><pubDate>Wed, 28 Dec 2011 21:55:17 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt mit Flag on Wed, 28 Dec 2011 22:33:43 GMT]]></title><description><![CDATA[<p>Eine Liste aller aktiven Objekte führen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2161656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161656</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Wed, 28 Dec 2011 22:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt mit Flag on Thu, 29 Dec 2011 11:02:48 GMT]]></title><description><![CDATA[<p>also speziell für dein Beispiel würde ich sagen:<br />
mach das Attribut public... wenn du ohnehin triviale getter und setter hast,<br />
kannst du den Zugriff auch so freigeben.<br />
in dem Fall würde für die Überprüfung von außen dann sprechen,<br />
dass die Funktionsaufrufe wegfallen, falls das Objekt inaktiv ist,<br />
was wiederum Performance bringt.</p>
<p>Insgesamt ist das aber nur Spekulation und hängt stark vom System, dem Compiler, der Optimierungsstufe, dem konkreten Inhalt deiner ausgeführten Funktionen usw.</p>
<p>z.B. könnte ein Compiler deine IsActive inlinen, sodass es im Binärcode genauso aussieht, als wäre die Variable immer public gewesen...<br />
Über die Grenzen einer Quelldatei hinaus würde das aber Link-Time-Optimization erfordern, die AFAIK noch nicht 100% ausgereift ist.</p>
<p>wenn es dir aber nicht um Performance oder Größe beim generierten Code geht, sondern nur um Stil,<br />
so würde ich mich volkard anschließen...</p>
<p>schreib es so, wie es Sinn macht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2161737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161737</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Thu, 29 Dec 2011 11:02:48 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt mit Flag on Thu, 29 Dec 2011 11:30:51 GMT]]></title><description><![CDATA[<p>Arrekk schrieb:</p>
<blockquote>
<p>Was ist besser?</p>
</blockquote>
<p>Würde auch meinen, dass das vom Fall abhängt. In meinem Jump'n'Run habe ich die Abfrage, ob ein Gegner aktiv ist, in der Schleife. Aber man könnte sich wie von TyRoXx vorgeschlagen auch überlegen, Gegner erst in die Hauptliste einzufügen, wenn sie aktiviert werden. Worum gehts konkret bei <code>update()</code> ?</p>
<p>DrakoXP schrieb:</p>
<blockquote>
<p>wenn du ohnehin triviale getter und setter hast,<br />
kannst du den Zugriff auch so freigeben.</p>
</blockquote>
<p>Nein. Lese-/Schreibzugriff ist immer noch getrennt, ausserdem ist die Implementierung verborgen und kann ohne Probleme geändert werden.</p>
<p>DrakoXP schrieb:</p>
<blockquote>
<p>in dem Fall würde für die Überprüfung von außen dann sprechen,<br />
dass die Funktionsaufrufe wegfallen, falls das Objekt inaktiv ist,<br />
was wiederum Performance bringt.</p>
</blockquote>
<p>Der Performanceunterschied ist kaum messbar bis nichtexistent. Dafür Kapselung zu opfern braucht stichhaltige Beweise.</p>
<p>Übrigens: Deine Versform sieht zwar interessant aus, aber das Forum bricht Zeilen automatisch um <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/2161745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2161745</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 29 Dec 2011 11:30:51 GMT</pubDate></item></channel></rss>