<?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[Verständnisproblem bei virtuellen Funktionen]]></title><description><![CDATA[<p>Ich habe einen Klasse CBaseGraphCtrldie folgende Funktion definiert:</p>
<pre><code class="language-cpp">class CBaseGraphCtrl : 	public CStatic
{
public:
	virtual void PaintContent(CDC &amp;pDC);
...
}
</code></pre>
<p>und sie nutzt in OnPaint</p>
<pre><code class="language-cpp">void CBaseGraphCtrl::OnPaint() 
{
	CPaintDC dc(this); 
	PaintContent(dc);
}
</code></pre>
<p>d.h. ich definiere und nutze ein Funktion ohne den Inhalt der Funktion zu definieren.</p>
<p>Das tue - und will ich erst in den davon abgeleiteten Klasse</p>
<pre><code class="language-cpp">class CPlotCtrl : public CBaseGraphCtrl
{
public:
	void PaintContent(CDC &amp;pDC);
	CMfcPlot Plot;
};

void CPlotCtrl::PaintContent(CDC &amp;pDC)
{
	Plot.SetPlotDC(&amp;pDC);
	Plot.Plot();
}
</code></pre>
<p>dieses vorgehen bringt mir jedoch den Linkerfehler:</p>
<blockquote>
<p>error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: virtual void __thiscall CBaseGraphCtrl::PaintContent(class CDC &amp;)&quot; (?PaintContent@CBaseGraphCtrl@@UAEXAAVCDC@@@Z)&quot;.</p>
</blockquote>
<p>Habe ich etwas falsch verstanden, und wenn ja wie löse ich mein Problem?</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185678/verständnisproblem-bei-virtuellen-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 05:49:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185678.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Jun 2007 16:36:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisproblem bei virtuellen Funktionen on Fri, 29 Jun 2007 16:50:36 GMT]]></title><description><![CDATA[<p>Ich habe einen Klasse CBaseGraphCtrldie folgende Funktion definiert:</p>
<pre><code class="language-cpp">class CBaseGraphCtrl : 	public CStatic
{
public:
	virtual void PaintContent(CDC &amp;pDC);
...
}
</code></pre>
<p>und sie nutzt in OnPaint</p>
<pre><code class="language-cpp">void CBaseGraphCtrl::OnPaint() 
{
	CPaintDC dc(this); 
	PaintContent(dc);
}
</code></pre>
<p>d.h. ich definiere und nutze ein Funktion ohne den Inhalt der Funktion zu definieren.</p>
<p>Das tue - und will ich erst in den davon abgeleiteten Klasse</p>
<pre><code class="language-cpp">class CPlotCtrl : public CBaseGraphCtrl
{
public:
	void PaintContent(CDC &amp;pDC);
	CMfcPlot Plot;
};

void CPlotCtrl::PaintContent(CDC &amp;pDC)
{
	Plot.SetPlotDC(&amp;pDC);
	Plot.Plot();
}
</code></pre>
<p>dieses vorgehen bringt mir jedoch den Linkerfehler:</p>
<blockquote>
<p>error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: virtual void __thiscall CBaseGraphCtrl::PaintContent(class CDC &amp;)&quot; (?PaintContent@CBaseGraphCtrl@@UAEXAAVCDC@@@Z)&quot;.</p>
</blockquote>
<p>Habe ich etwas falsch verstanden, und wenn ja wie löse ich mein Problem?</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315176</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Fri, 29 Jun 2007 16:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem bei virtuellen Funktionen on Fri, 29 Jun 2007 16:45:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>eine Funktion virtual zu machen heisst ja: Wer Bock hat kann mich überschreiben.<br />
Folglich musst du die Funktion der Basisklasse abstrakt machen oder ihr<br />
einen (leeren) Funktionsrumpf spendieren.</p>
<p>Jockel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315184</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Fri, 29 Jun 2007 16:45:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem bei virtuellen Funktionen on Fri, 29 Jun 2007 17:24:46 GMT]]></title><description><![CDATA[<p>Und, um den Vorredner zu ergänzen, abstrakt machst Du die Funktion, indem Du '= 0' dahinter schreibst. Also:</p>
<pre><code class="language-cpp">virtual void PaintContent(CDC &amp;pDC) = 0;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1315210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315210</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 29 Jun 2007 17:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem bei virtuellen Funktionen on Fri, 29 Jun 2007 17:35:55 GMT]]></title><description><![CDATA[<p>Braucht man dann eigentlich einen virtuellen Dekonstruktor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315216</guid><dc:creator><![CDATA[dedjhrgfjserikdihjhh]]></dc:creator><pubDate>Fri, 29 Jun 2007 17:35:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem bei virtuellen Funktionen on Fri, 29 Jun 2007 17:40:26 GMT]]></title><description><![CDATA[<p>dedjhrgfjserikdihjhh schrieb:</p>
<blockquote>
<p>Braucht man dann eigentlich einen virtuellen Dekonstruktor?</p>
</blockquote>
<p>Eigentlich ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315219</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Fri, 29 Jun 2007 17:40:26 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem bei virtuellen Funktionen on Sat, 30 Jun 2007 10:39:28 GMT]]></title><description><![CDATA[<p>Im Grund bist du bei öffentlicher Ableitung immer auf sicherer Seite <strong>mit</strong> virtuellem Destruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1315503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1315503</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 30 Jun 2007 10:39:28 GMT</pubDate></item></channel></rss>