<?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[Undefined Reference zu virtuellem Destruktor]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem: Ich habe ein Interface IGeneralDevice.hpp, das folgende Methoden enthält:</p>
<pre><code class="language-cpp">virtual ~IGeneralDevice() = 0;
// Plus zusätzliche Methoden
</code></pre>
<p>Jetzt habe ich eine Klasse MatlabDevice, die von dieser Klasse erbt.</p>
<pre><code class="language-cpp">MatlabDevice();
~MatlabDevice();
// Und Deklaration der restlichen Methoden
</code></pre>
<p>Hier die Implementierungen in der MatlabDevice.cpp:</p>
<pre><code class="language-cpp">MatlabDevice::MatlabDevice() {
	simulationStarted = false;
	setup = false;
}
MatlabDevice::~MatlabDevice() {
}
// Restliche Implementierungen
</code></pre>
<p>Ich bekomme bei beiden Methoden folgenden Fehler: &quot;undefined reference to `IGeneralDevice::~IGeneralDevice()'&quot;</p>
<p>Kann sich jemand den Fehler erklären? Ich sehe da irgendwie keinen -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307848/undefined-reference-zu-virtuellem-destruktor</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 09:31:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307848.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Sep 2012 16:02:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 16:02:47 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem: Ich habe ein Interface IGeneralDevice.hpp, das folgende Methoden enthält:</p>
<pre><code class="language-cpp">virtual ~IGeneralDevice() = 0;
// Plus zusätzliche Methoden
</code></pre>
<p>Jetzt habe ich eine Klasse MatlabDevice, die von dieser Klasse erbt.</p>
<pre><code class="language-cpp">MatlabDevice();
~MatlabDevice();
// Und Deklaration der restlichen Methoden
</code></pre>
<p>Hier die Implementierungen in der MatlabDevice.cpp:</p>
<pre><code class="language-cpp">MatlabDevice::MatlabDevice() {
	simulationStarted = false;
	setup = false;
}
MatlabDevice::~MatlabDevice() {
}
// Restliche Implementierungen
</code></pre>
<p>Ich bekomme bei beiden Methoden folgenden Fehler: &quot;undefined reference to `IGeneralDevice::~IGeneralDevice()'&quot;</p>
<p>Kann sich jemand den Fehler erklären? Ich sehe da irgendwie keinen -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249177</guid><dc:creator><![CDATA[mikemodanoxxx]]></dc:creator><pubDate>Thu, 06 Sep 2012 16:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 16:08:29 GMT]]></title><description><![CDATA[<p>Der Destruktor muss IMMER implementiert werden</p>
<pre><code class="language-cpp">virtual ~IGeneralDevice() = 0 {}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2249183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249183</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 06 Sep 2012 16:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 16:08:29 GMT]]></title><description><![CDATA[<p>Ist <code>IGeneralDevice::~IGeneralDevice()</code> denn irgendwo definiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249182</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 06 Sep 2012 16:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 16:15:22 GMT]]></title><description><![CDATA[<p>Hm wo ist denn da der Sinn bei einer rein virtuellen Klasse?</p>
<p>Wenn ich virtual ~IGeneralDevice() {} hinschreibe bekomme ich einen undefined reference to vtable Fehler. die = 0 { } führt zu einem &quot;reiner Spezifizierer bei Funktionsdefinition&quot; Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249185</guid><dc:creator><![CDATA[mikemodanoxxx]]></dc:creator><pubDate>Thu, 06 Sep 2012 16:15:22 GMT</pubDate></item><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 16:28:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">virtual ~IGeneralDevice() {}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2249193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249193</guid><dc:creator><![CDATA[GorbGorb]]></dc:creator><pubDate>Thu, 06 Sep 2012 16:28:35 GMT</pubDate></item><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 16:30:47 GMT]]></title><description><![CDATA[<p>Habe doch geschrieben, dass ich damit einen vtable-Fehler bekomme. Das deutet normalerweise daraufhin, dass irgendeine Methode nicht implementiert wurde, oder? Kann aber keine finden..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249195</guid><dc:creator><![CDATA[mikemodanoxxx]]></dc:creator><pubDate>Thu, 06 Sep 2012 16:30:47 GMT</pubDate></item><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 16:40:14 GMT]]></title><description><![CDATA[<p>ok danke, hat sich wohl erledigt. Hatte bei den virtuellen Methoden in der Basisklasse das = 0; vergessen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249199</guid><dc:creator><![CDATA[mikemodanoxxx]]></dc:creator><pubDate>Thu, 06 Sep 2012 16:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 17:40:46 GMT]]></title><description><![CDATA[<p>Sorry, das Feature benutze ich auch ziemlich selten.</p>
<pre><code class="language-cpp">class IGeneralDevice{
    virtual ~IGeneralDevice() = 0;
};
IGeneralDevice::~IGeneralDevice(){}
</code></pre>
<p>GorbGorb schrieb:</p>
<blockquote>
<pre><code class="language-cpp">virtual ~IGeneralDevice() {}
</code></pre>
</blockquote>
<p>das macht nicht das Selbe. Versuch mal in der pure virtual version (wie oben) ein Objekt vom Typ IGeneralDevice zu erzeugen. Du wirst merken, dass das nicht geht. Der rein virtuelle Destruktor in einer Klasse die sonst keine Methoden besitzt bewirkt, dass die Klasse abstrakt wird. Trotzdem muss der Destruktor implementiert sein. Das geht nebenbei bei jeder abstrakten Funktion. Du musst sie überschreiben, aber du kannst eine default implementation anbieten, die in der abgeleiteten Klasse aber explizit gewählt werden muss (mit Basisklasse::methode(...)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249221</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 06 Sep 2012 17:40:46 GMT</pubDate></item><item><title><![CDATA[Reply to Undefined Reference zu virtuellem Destruktor on Thu, 06 Sep 2012 17:42:01 GMT]]></title><description><![CDATA[<p>der dtor spielt eben eine sonderrolle,da er stets aufgerufen wird,auch wenn er überschrieben wird. Darum muss eben eine Implementierung auch in einer abstrakten Klasse vorliegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249222</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 06 Sep 2012 17:42:01 GMT</pubDate></item></channel></rss>