<?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[Abstrakte Basisklasse: Membervariable wird nicht verwendet]]></title><description><![CDATA[<p>Hi, ich habe eine abstrakte Basisklasse mit einer Membervariable, die über den Konstruktor initialisiert wird und von allen abgeleiteten Klassen verwendet werden wird. Ich kompiliere im Moment mit <code>clang</code> und aktiviere alle Warnungen, so dass mein Compiler bemängelt, dass ich die Membervariable gar nicht verwende. Damit er Ruhe gibt, habe ich (nach etwas Googeln) einen kleinen Präprozessor-Code-Schnipsel gefunden, so dass mein Code jetzt so aussieht:</p>
<pre><code>/// Base for all object components
class ObjectComponent {

	protected:
		// @note: member only used in derived component
#pragma clang diagnostic push
#pragma clang diagnostic ignored &quot;-Wunused-private-field&quot;
		GameObject&amp; parent;
#pragma clang diagnostic pop

	public:
		ObjectComponent(GameObject&amp; parent);
		virtual ~ObjectComponent();

		virtual void update(sf::Time const &amp; elapsed) = 0;
		virtual void handle(ObjectEvent const &amp; event) = 0;
};
</code></pre>
<p>Ist das gängige Praxis? Oder seht ihr andere Möglichkeiten das Problem zu lösen? Ich möchte prinzipiell schon die Compilerwarnungen vollständig haben - hier aber explizit nicht (ich behandle Warnungen immer absichtlich als Fehler, so dass ich nicht fertigkompilieren kann).</p>
<p>LG Glocke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329826/abstrakte-basisklasse-membervariable-wird-nicht-verwendet</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 20:55:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329826.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Dec 2014 16:05:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Abstrakte Basisklasse: Membervariable wird nicht verwendet on Tue, 09 Dec 2014 16:05:30 GMT]]></title><description><![CDATA[<p>Hi, ich habe eine abstrakte Basisklasse mit einer Membervariable, die über den Konstruktor initialisiert wird und von allen abgeleiteten Klassen verwendet werden wird. Ich kompiliere im Moment mit <code>clang</code> und aktiviere alle Warnungen, so dass mein Compiler bemängelt, dass ich die Membervariable gar nicht verwende. Damit er Ruhe gibt, habe ich (nach etwas Googeln) einen kleinen Präprozessor-Code-Schnipsel gefunden, so dass mein Code jetzt so aussieht:</p>
<pre><code>/// Base for all object components
class ObjectComponent {

	protected:
		// @note: member only used in derived component
#pragma clang diagnostic push
#pragma clang diagnostic ignored &quot;-Wunused-private-field&quot;
		GameObject&amp; parent;
#pragma clang diagnostic pop

	public:
		ObjectComponent(GameObject&amp; parent);
		virtual ~ObjectComponent();

		virtual void update(sf::Time const &amp; elapsed) = 0;
		virtual void handle(ObjectEvent const &amp; event) = 0;
};
</code></pre>
<p>Ist das gängige Praxis? Oder seht ihr andere Möglichkeiten das Problem zu lösen? Ich möchte prinzipiell schon die Compilerwarnungen vollständig haben - hier aber explizit nicht (ich behandle Warnungen immer absichtlich als Fehler, so dass ich nicht fertigkompilieren kann).</p>
<p>LG Glocke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431983</guid><dc:creator><![CDATA[Glocke]]></dc:creator><pubDate>Tue, 09 Dec 2014 16:05:30 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Basisklasse: Membervariable wird nicht verwendet on Tue, 09 Dec 2014 16:19:54 GMT]]></title><description><![CDATA[<p>Schreib in die zugehörige CPP</p>
<pre><code>ObjectComponent::ObjectComponent(GameObject&amp; parent_) : parent(parent_)
{
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2431984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431984</guid><dc:creator><![CDATA[MichelRT]]></dc:creator><pubDate>Tue, 09 Dec 2014 16:19:54 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Basisklasse: Membervariable wird nicht verwendet on Tue, 09 Dec 2014 16:23:13 GMT]]></title><description><![CDATA[<p>Steht bereits da:</p>
<pre><code>ObjectComponent::ObjectComponent(GameObject&amp; parent)
	: parent{parent} {
}

ObjectComponent::~ObjectComponent() {
}
</code></pre>
<p>Laut Aussage des Compilers: &quot;Set but never used&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431986</guid><dc:creator><![CDATA[Glocke]]></dc:creator><pubDate>Tue, 09 Dec 2014 16:23:13 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Basisklasse: Membervariable wird nicht verwendet on Tue, 09 Dec 2014 16:24:38 GMT]]></title><description><![CDATA[<p>Glocke schrieb:</p>
<blockquote>
<p>Ist das gängige Praxis?</p>
</blockquote>
<p>Da es sich hier um einen Compiler-Bug handelt, ist so ein Workaround wohl angebracht. Bug, weil der Compiler ganz leicht erkennen könnte, dass die Klasse nur als abstrakte Basis gedacht ist und er deshalb in den abgeleiteten Klassen schauen müsste, ob <code>parent</code> verwendet wird.</p>
<p>Glocke schrieb:</p>
<blockquote>
<p>Oder seht ihr andere Möglichkeiten das Problem zu lösen?</p>
</blockquote>
<p><code>parent</code> privat machen und einen Getter dafür hinzufügen. Vielleicht meckert Clang dann nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431987</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Tue, 09 Dec 2014 16:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Basisklasse: Membervariable wird nicht verwendet on Tue, 09 Dec 2014 16:25:40 GMT]]></title><description><![CDATA[<p>Was passiert, wenn du parent in einem Ausruck ohne Seiteneffekte einsetzt?<br />
Also einfach</p>
<pre><code class="language-cpp">parent;
</code></pre>
<p>im Konstruktor (dort nat. this-&gt;parent) oder Destruktor (evtl. noch mit einem cast auf void versehen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431988</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 09 Dec 2014 16:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Basisklasse: Membervariable wird nicht verwendet on Tue, 09 Dec 2014 16:26:16 GMT]]></title><description><![CDATA[<p>Sobald Du davon eine Klasse ableitest sollte die Warnung verschwinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431989</guid><dc:creator><![CDATA[MichelRT]]></dc:creator><pubDate>Tue, 09 Dec 2014 16:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Basisklasse: Membervariable wird nicht verwendet on Tue, 09 Dec 2014 16:39:34 GMT]]></title><description><![CDATA[<p>MichelRT schrieb:</p>
<blockquote>
<p>Sobald Du davon eine Klasse ableitest sollte die Warnung verschwinden.</p>
</blockquote>
<p>Tatsache <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="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2431991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2431991</guid><dc:creator><![CDATA[Glocke]]></dc:creator><pubDate>Tue, 09 Dec 2014 16:39:34 GMT</pubDate></item></channel></rss>