<?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[Problem mit pure virtual]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe grad einen Knoten... Meiner Meinung nach müsste folgendes funktionieren (Pseudocode, der Compiler ist der aktuelle Intel-C++):</p>
<pre><code class="language-cpp">class a // abstract
	{
	protected:
		virtual void func() = 0;

		a(...)
		{
			func();
		}

	public:
		virtual ~a() {}
	};

	class b : public a // abstract
	{
	protected:
		b(...) : a(...)
		{
		}
	};

	class c : public b
	{

	public:		
		c(...) : b(...) {}

		void func();
	};

	void c::func()
	{
		// mach was
	}
</code></pre>
<p>Tut es aber nicht. Sieht jemand wo der Haken ist?</p>
<p>edit: Achso, der Fehler tritt btw. erst beim Linken auf, syntaktisch korrekt ist der Code also:</p>
<pre><code>Undefined symbols:
  &quot;__ZN5a7funcEv&quot;, referenced from:
      __ZN5a14blubb in main.o
ld: symbol(s) not found
</code></pre>
<p>Lustigerweise wird, wenn ich die Funktion einfach nur virtual mache und eine Definition einfüge immer a::func aufgerufen. Ich bin echt irgendwie eingerostet. Ich hab das schon tausendmal gemacht, aber irgendwie bekomm ich das da oben nicht zum laufen...</p>
<p>Gruß, Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229272/problem-mit-pure-virtual</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 02:18:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229272.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Dec 2008 18:30:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit pure virtual on Tue, 09 Dec 2008 18:43:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe grad einen Knoten... Meiner Meinung nach müsste folgendes funktionieren (Pseudocode, der Compiler ist der aktuelle Intel-C++):</p>
<pre><code class="language-cpp">class a // abstract
	{
	protected:
		virtual void func() = 0;

		a(...)
		{
			func();
		}

	public:
		virtual ~a() {}
	};

	class b : public a // abstract
	{
	protected:
		b(...) : a(...)
		{
		}
	};

	class c : public b
	{

	public:		
		c(...) : b(...) {}

		void func();
	};

	void c::func()
	{
		// mach was
	}
</code></pre>
<p>Tut es aber nicht. Sieht jemand wo der Haken ist?</p>
<p>edit: Achso, der Fehler tritt btw. erst beim Linken auf, syntaktisch korrekt ist der Code also:</p>
<pre><code>Undefined symbols:
  &quot;__ZN5a7funcEv&quot;, referenced from:
      __ZN5a14blubb in main.o
ld: symbol(s) not found
</code></pre>
<p>Lustigerweise wird, wenn ich die Funktion einfach nur virtual mache und eine Definition einfüge immer a::func aufgerufen. Ich bin echt irgendwie eingerostet. Ich hab das schon tausendmal gemacht, aber irgendwie bekomm ich das da oben nicht zum laufen...</p>
<p>Gruß, Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627803</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Tue, 09 Dec 2008 18:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit pure virtual on Tue, 09 Dec 2008 18:43:13 GMT]]></title><description><![CDATA[<p>Zunächst einmal: du kannst keine virtuellen Funktionen im Konstruktor aufrufen, da das Objekt (und insbesondere der Vtable) zu dem Zeitpunkt noch nicht vollständig sind.</p>
<p>Was die Fehlermeldung angeht ist es schwer, dazu etwas zu sagen, weil &quot;blablabla&quot; in deinem gepostetet Code nirgendwo vorkommt. Daraus läßt sich leider nicht erkennen, was genau dem Compiler/Linker fehlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627805</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Tue, 09 Dec 2008 18:43:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit pure virtual on Tue, 09 Dec 2008 18:48:09 GMT]]></title><description><![CDATA[<p>dooooomi schrieb:</p>
<blockquote>
<p>Zunächst einmal: du kannst keine virtuellen Funktionen im Konstruktor aufrufen, da das Objekt (und insbesondere der Vtable) zu dem Zeitpunkt noch nicht vollständig sind.</p>
</blockquote>
<p>Args, ich sags doch: eingerostet. Dank Dir! Das war genau das Problem!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627807</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Tue, 09 Dec 2008 18:48:09 GMT</pubDate></item></channel></rss>