<?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[[erledigt] virtual und vererbung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche eine Datei in Haeder und Body aufzuteilen.</p>
<p>Ich hab ein Interface und eine View Klasse, die von dem Interface erbt.</p>
<p>Interface:</p>
<pre><code class="language-cpp">//Beobachter.hpp

#ifndef BEOBACHTER_HPP
#define BEOBACHTER_HPP

class Beobachter
{
	public:
		virtual void update() = 0;
};

#endif
</code></pre>
<p>View:</p>
<pre><code class="language-cpp">//View.hpp

#ifndef VIEW_HPP
#define VIEW_HPP

#include &quot;Beobachter.hpp&quot;

class View : public Beobachter
{
	public:
		View();
		void update();
};

#endif
</code></pre>
<p>Wenn ich nun versuche in der Body Datei (cpp)</p>
<pre><code class="language-cpp">//View.cpp

#include &quot;View.hpp&quot;

View::View() : Beobachter() {} // Aufruf der Base Klass
</code></pre>
<p>bekomme ich Linkfehler:</p>
<blockquote>
<p>View.o: In function <code>View::View()': View.cpp:(.text+0x8): undefined reference to</code>vtable for View'<br />
View.o: In function <code>View::View()': View.cpp:(.text+0x18): undefined reference to</code>vtable for View'<br />
collect2: ld returned 1 exit status<br />
make: *** [first] Error 1</p>
</blockquote>
<p>Wenn ich den Code in die Haeder Datei schreibe, dann geht es, aber so sollte es nicht sein.<br />
Andere View.hpp</p>
<pre><code class="language-cpp">//View.hpp

#ifndef VIEW_HPP
#define VIEW_HPP

#include &quot;Beobachter.hpp&quot;

class View : public Beobachter
{
	public:
		View() : Beobachter(); // Hier der Aufruf der Base Klass
		void update();
};

#endif
</code></pre>
<p>Wie kann ich die Linkfehler wegbekommen mit dem Code in der cpp Datei?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202915/erledigt-virtual-und-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 08:08:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202915.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Jan 2008 17:44:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [erledigt] virtual und vererbung on Fri, 18 Jan 2008 10:24:10 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche eine Datei in Haeder und Body aufzuteilen.</p>
<p>Ich hab ein Interface und eine View Klasse, die von dem Interface erbt.</p>
<p>Interface:</p>
<pre><code class="language-cpp">//Beobachter.hpp

#ifndef BEOBACHTER_HPP
#define BEOBACHTER_HPP

class Beobachter
{
	public:
		virtual void update() = 0;
};

#endif
</code></pre>
<p>View:</p>
<pre><code class="language-cpp">//View.hpp

#ifndef VIEW_HPP
#define VIEW_HPP

#include &quot;Beobachter.hpp&quot;

class View : public Beobachter
{
	public:
		View();
		void update();
};

#endif
</code></pre>
<p>Wenn ich nun versuche in der Body Datei (cpp)</p>
<pre><code class="language-cpp">//View.cpp

#include &quot;View.hpp&quot;

View::View() : Beobachter() {} // Aufruf der Base Klass
</code></pre>
<p>bekomme ich Linkfehler:</p>
<blockquote>
<p>View.o: In function <code>View::View()': View.cpp:(.text+0x8): undefined reference to</code>vtable for View'<br />
View.o: In function <code>View::View()': View.cpp:(.text+0x18): undefined reference to</code>vtable for View'<br />
collect2: ld returned 1 exit status<br />
make: *** [first] Error 1</p>
</blockquote>
<p>Wenn ich den Code in die Haeder Datei schreibe, dann geht es, aber so sollte es nicht sein.<br />
Andere View.hpp</p>
<pre><code class="language-cpp">//View.hpp

#ifndef VIEW_HPP
#define VIEW_HPP

#include &quot;Beobachter.hpp&quot;

class View : public Beobachter
{
	public:
		View() : Beobachter(); // Hier der Aufruf der Base Klass
		void update();
};

#endif
</code></pre>
<p>Wie kann ich die Linkfehler wegbekommen mit dem Code in der cpp Datei?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437896</guid><dc:creator><![CDATA[Piioo]]></dc:creator><pubDate>Fri, 18 Jan 2008 10:24:10 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] virtual und vererbung on Wed, 16 Jan 2008 22:55:27 GMT]]></title><description><![CDATA[<p><a href="http://gcc.gnu.org/faq.html#vtables" rel="nofollow">http://gcc.gnu.org/faq.html#vtables</a><br />
Ich hab zwar noch ein bisschen Verständnisschwierigkeiten, aber es scheint ja an den Übersetzungseinheiten zu liegen, da deine zweite Lösung funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438064</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Wed, 16 Jan 2008 22:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] virtual und vererbung on Thu, 17 Jan 2008 00:04:18 GMT]]></title><description><![CDATA[<p>wie sollte der compiler eine vtable für View machen können, wenn du die funktion update nirgends definierst? immerhin muss in die vtable deren adresse hinein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438072</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 17 Jan 2008 00:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] virtual und vererbung on Thu, 17 Jan 2008 06:04:08 GMT]]></title><description><![CDATA[<p>Übersetzt du View.cpp überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438111</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 17 Jan 2008 06:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] virtual und vererbung on Fri, 18 Jan 2008 10:23:30 GMT]]></title><description><![CDATA[<p>Vielen Dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>ich wusste, dass ich die update Funktion schreiben muss, aber der Fehler hat nicht direkt auf sie verwiesen, deshalb war ich verwirrt und versuchte erstmal den Fehler zu beseitigen.</p>
<p>Also nachdem ich die update Funktion implementiert habe, kompiliert er ohne Probleme.</p>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438882</guid><dc:creator><![CDATA[Piioo]]></dc:creator><pubDate>Fri, 18 Jan 2008 10:23:30 GMT</pubDate></item></channel></rss>