<?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[Linker error: undefined reference to ...]]></title><description><![CDATA[<p>Hi,<br />
ich versuche mich gerade an Aufgabe 7 von hier:<br />
<a href="http://www.cpp-entwicklung.de/cpplinux3/cpp_main/cpp_mainch2.html#x3-1290002.6.10" rel="nofollow">http://www.cpp-entwicklung.de/cpplinux3/cpp_main/cpp_mainch2.html#x3-1290002.6.10</a></p>
<p>Ich splitte meinen Code erst seit Kurzem in mehrere Files, diese Header etc. sind mir daher noch neu. Irgendwo da liegt wohl auch mein Linker-Fehler begraben:</p>
<blockquote>
<p>03_S93_A3_main.cpp:(.text+0x29): undefined reference to <code>Rational::Rational()' 03\_S93\_A3_main.cpp:(.text+0x45): undefined reference to</code>Rational::set(long, long)'<br />
03_S93_A3_main.cpp:(.text+0x61): undefined reference to <code>Rational::set(long, long)' 03\_S93\_A3_main.cpp:(.text+0x70): undefined reference to</code>std::cout'</p>
</blockquote>
<p>Das sind nur 4 Zeilen, die richtige Fehlermeldung ist ca. zehnmal so lang, mit lauter 'undefined references'.</p>
<p>Hier meine Dateien:</p>
<p>03_S93_A3_main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;03_S93_A3_classes.h&quot;

int main()
{
    Rational halb, neuntel, temp;
    halb.set(3,6);
    neuntel.set(1,9);

    std::cout &lt;&lt; &quot;Halb: &quot;;
    halb.ausgabe();
    temp.sub(halb,neuntel);
    std::cout &lt;&lt; &quot;halb - neuntel: &quot;;
    temp.ausgabe();
    return 0;
}
</code></pre>
<p>03_S93_A3_classes.h</p>
<pre><code>class Rational
{
private:
	long zaehler, nenner;
	long ggT (long _a,long _b);

public:
	Rational();

	void add(Rational&amp; _a, Rational&amp; _b);
	void sub(Rational&amp; _a, Rational&amp; _b);
	void mult(Rational&amp; _a, Rational&amp; _b);
	void div(Rational&amp; _a, Rational&amp; _b);

	void set(long _z, long _n);
	void kuerzen();
	void ausgabe();
};
</code></pre>
<p>03_S93_A3_classes.cpp</p>
<pre><code>#include &lt;iostream&gt;

class Rational
{
private:
	long zaehler, nenner;
	long ggT (long _x,long _y)
	{
		while(_y)
		{
			long r = _x % _y;
			_x = _y;
			_y = r;
		}
		return (_x);
	}

public:
	Rational(){ set(0,1); }

	void add(Rational&amp; _a, Rational&amp; _b)
	{
		set( _a.zaehler * _b.nenner + _a.nenner * _b.zaehler , _a.nenner * _b.nenner );
	}
	void sub(Rational&amp; _a, Rational&amp; _b)
	{
		set( _a.zaehler * _b.nenner - _a.nenner * _b.zaehler , _a.nenner * _b.nenner );
	}
	void mult(Rational&amp; _a, Rational&amp; _b)
	{
		set( _a.zaehler * _b.zaehler , _a.nenner * _b.nenner );
	}
	void div(Rational&amp; _a, Rational&amp; _b)
	{
		set( _a.zaehler * _b.nenner , _a.nenner * _b.zaehler );
	}

	void set(long _z, long _n)
	{
		// this.zaehler ?
		zaehler = _z;
		nenner = _n;
		// this.kuerzen ?
		kuerzen();
	}
	void kuerzen()
	{
		int ggt = ggT(zaehler,nenner);
		zaehler /= ggt;
		nenner /= ggt;
	}
	void ausgabe()
	{
		std::cout &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; std::endl;
	}
};
</code></pre>
<p>Wäre super, wenn jemand findet, was ich da verbockt habe.<br />
Danke schon mal <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/274799/linker-error-undefined-reference-to</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 07:15:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274799.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Oct 2010 13:19:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linker error: undefined reference to ... on Sun, 03 Oct 2010 13:19:20 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich versuche mich gerade an Aufgabe 7 von hier:<br />
<a href="http://www.cpp-entwicklung.de/cpplinux3/cpp_main/cpp_mainch2.html#x3-1290002.6.10" rel="nofollow">http://www.cpp-entwicklung.de/cpplinux3/cpp_main/cpp_mainch2.html#x3-1290002.6.10</a></p>
<p>Ich splitte meinen Code erst seit Kurzem in mehrere Files, diese Header etc. sind mir daher noch neu. Irgendwo da liegt wohl auch mein Linker-Fehler begraben:</p>
<blockquote>
<p>03_S93_A3_main.cpp:(.text+0x29): undefined reference to <code>Rational::Rational()' 03\_S93\_A3_main.cpp:(.text+0x45): undefined reference to</code>Rational::set(long, long)'<br />
03_S93_A3_main.cpp:(.text+0x61): undefined reference to <code>Rational::set(long, long)' 03\_S93\_A3_main.cpp:(.text+0x70): undefined reference to</code>std::cout'</p>
</blockquote>
<p>Das sind nur 4 Zeilen, die richtige Fehlermeldung ist ca. zehnmal so lang, mit lauter 'undefined references'.</p>
<p>Hier meine Dateien:</p>
<p>03_S93_A3_main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;03_S93_A3_classes.h&quot;

int main()
{
    Rational halb, neuntel, temp;
    halb.set(3,6);
    neuntel.set(1,9);

    std::cout &lt;&lt; &quot;Halb: &quot;;
    halb.ausgabe();
    temp.sub(halb,neuntel);
    std::cout &lt;&lt; &quot;halb - neuntel: &quot;;
    temp.ausgabe();
    return 0;
}
</code></pre>
<p>03_S93_A3_classes.h</p>
<pre><code>class Rational
{
private:
	long zaehler, nenner;
	long ggT (long _a,long _b);

public:
	Rational();

	void add(Rational&amp; _a, Rational&amp; _b);
	void sub(Rational&amp; _a, Rational&amp; _b);
	void mult(Rational&amp; _a, Rational&amp; _b);
	void div(Rational&amp; _a, Rational&amp; _b);

	void set(long _z, long _n);
	void kuerzen();
	void ausgabe();
};
</code></pre>
<p>03_S93_A3_classes.cpp</p>
<pre><code>#include &lt;iostream&gt;

class Rational
{
private:
	long zaehler, nenner;
	long ggT (long _x,long _y)
	{
		while(_y)
		{
			long r = _x % _y;
			_x = _y;
			_y = r;
		}
		return (_x);
	}

public:
	Rational(){ set(0,1); }

	void add(Rational&amp; _a, Rational&amp; _b)
	{
		set( _a.zaehler * _b.nenner + _a.nenner * _b.zaehler , _a.nenner * _b.nenner );
	}
	void sub(Rational&amp; _a, Rational&amp; _b)
	{
		set( _a.zaehler * _b.nenner - _a.nenner * _b.zaehler , _a.nenner * _b.nenner );
	}
	void mult(Rational&amp; _a, Rational&amp; _b)
	{
		set( _a.zaehler * _b.zaehler , _a.nenner * _b.nenner );
	}
	void div(Rational&amp; _a, Rational&amp; _b)
	{
		set( _a.zaehler * _b.nenner , _a.nenner * _b.zaehler );
	}

	void set(long _z, long _n)
	{
		// this.zaehler ?
		zaehler = _z;
		nenner = _n;
		// this.kuerzen ?
		kuerzen();
	}
	void kuerzen()
	{
		int ggt = ggT(zaehler,nenner);
		zaehler /= ggt;
		nenner /= ggt;
	}
	void ausgabe()
	{
		std::cout &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; std::endl;
	}
};
</code></pre>
<p>Wäre super, wenn jemand findet, was ich da verbockt habe.<br />
Danke schon mal <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1960774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960774</guid><dc:creator><![CDATA[Gerald Ast]]></dc:creator><pubDate>Sun, 03 Oct 2010 13:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Linker error: undefined reference to ... on Sun, 03 Oct 2010 13:22:44 GMT]]></title><description><![CDATA[<p>Du sollst in der .cpp-Datei nicht die komplette Klasse neu definieren, sondern nur ihre Methoden.</p>
<pre><code class="language-cpp">void Rational::set(long _z, long _n)
{
    ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1960776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960776</guid><dc:creator><![CDATA[Wilhelm I]]></dc:creator><pubDate>Sun, 03 Oct 2010 13:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Linker error: undefined reference to ... on Sun, 03 Oct 2010 13:26:43 GMT]]></title><description><![CDATA[<p>Hey,<br />
ja, in der Lösung wird das so gemacht.<br />
Muss kurz sagen, dass ich von C komme, und mit Objektorientierung immer noch Schwierigkeiten hab.</p>
<p>Ich sehe in der Headerdatei so eine Art Prototyp einer Funktion, die man später nochmal ganz ausschreibt. Genauso hab ich das mit der Klasse gemacht.<br />
Was an dem Gedanken ist da falsch?</p>
<p>Was ich gemacht habe, ist also keine (umständlichere) Alternative, sondern falsch. Seltsam. Aber danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1960778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960778</guid><dc:creator><![CDATA[Gerald Ast]]></dc:creator><pubDate>Sun, 03 Oct 2010 13:26:43 GMT</pubDate></item><item><title><![CDATA[Reply to Linker error: undefined reference to ... on Sun, 03 Oct 2010 13:29:32 GMT]]></title><description><![CDATA[<p>Du darfst Dinge nicht zwei Mal definieren (One Definition Rule). Da die Klassendefinition schon im Header vorkommt, kann und muss sie in der .cpp-Datei weggelassen werden.</p>
<p>Bei den Funktionen hingegen hast du im Header nur die Deklaration (wie du sagst den Prototypen), die Definition (Implementierung) kannst du in die .cpp-Datei auslagern. In C ist das ja ähnlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960779</guid><dc:creator><![CDATA[Wilhelm II]]></dc:creator><pubDate>Sun, 03 Oct 2010 13:29:32 GMT</pubDate></item><item><title><![CDATA[Reply to Linker error: undefined reference to ... on Sun, 03 Oct 2010 13:31:54 GMT]]></title><description><![CDATA[<p>Ha!<br />
Klassendefinition und Methodendefinition. Die hab ich blöderweise unter einen Hut gesteckt. Danke dir!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960780</guid><dc:creator><![CDATA[Gerald Ast]]></dc:creator><pubDate>Sun, 03 Oct 2010 13:31:54 GMT</pubDate></item><item><title><![CDATA[Reply to Linker error: undefined reference to ... on Sun, 03 Oct 2010 15:52:44 GMT]]></title><description><![CDATA[<p>Gerald Ast schrieb:</p>
<blockquote>
<p>Ha!<br />
Klassendefinition und Methodendefinition. Die hab ich blöderweise unter einen Hut gesteckt. Danke dir!</p>
</blockquote>
<p>Klassendefinition:</p>
<pre><code class="language-cpp">class foo
{
   void bar();
};
</code></pre>
<p>Implementation:</p>
<pre><code class="language-cpp">#include &lt;foo.hpp&gt;

void foo::bar() 
{
    while (1) 
    {
        ProgramDukeNukemForever(new Engine(ENGINE_VERSION_2011));
    }
}
</code></pre>
<p>rya.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1960833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1960833</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 03 Oct 2010 15:52:44 GMT</pubDate></item></channel></rss>