<?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[template friend Funktion]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in einer Template-Klasse eine friend Funktion. Die Funktion wollte ich aber der Übersichtlichkeit halten nicht in der Klasse definieren.</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class A {
public:
  friend B&amp; myFriend(B&amp; b, A&lt;T&gt;&amp; rhs);
};

template&lt;class T&gt;
B&amp; myFriend(B&amp; b, A&lt;T&gt;&amp; rhs) {
  ...
}
</code></pre>
<p>Das Problem ist: Wenn ich die Funktion nicht in der Klasse definiere, sondern darunter, dann gibt mir der Linker einen Fehler, dass das Symbol nicht aufgelöst sei, wenn ich auf die Funktion zugreifen möchte:</p>
<pre><code class="language-cpp">myFriend(objektB, objektA); // Linkerfehler
</code></pre>
<p>Definiere ich die Funktion hingegen direkt in der Klasse, funktioniert das ohne Probleme.</p>
<p>Meine Frage also:<br />
Wie muss die Funktionssignatur außerhalb der Klasse aussehen, damit es keine Probleme gibt? Geht das überhaupt?</p>
<p>(Das ganze befindet sich im Header, also der gängige cpp-Datei-Fehler-mit-Templates ist ausgeschlossen)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218809/template-friend-funktion</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 21:18:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218809.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 25 Jul 2008 13:46:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template friend Funktion on Fri, 25 Jul 2008 13:46:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in einer Template-Klasse eine friend Funktion. Die Funktion wollte ich aber der Übersichtlichkeit halten nicht in der Klasse definieren.</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class A {
public:
  friend B&amp; myFriend(B&amp; b, A&lt;T&gt;&amp; rhs);
};

template&lt;class T&gt;
B&amp; myFriend(B&amp; b, A&lt;T&gt;&amp; rhs) {
  ...
}
</code></pre>
<p>Das Problem ist: Wenn ich die Funktion nicht in der Klasse definiere, sondern darunter, dann gibt mir der Linker einen Fehler, dass das Symbol nicht aufgelöst sei, wenn ich auf die Funktion zugreifen möchte:</p>
<pre><code class="language-cpp">myFriend(objektB, objektA); // Linkerfehler
</code></pre>
<p>Definiere ich die Funktion hingegen direkt in der Klasse, funktioniert das ohne Probleme.</p>
<p>Meine Frage also:<br />
Wie muss die Funktionssignatur außerhalb der Klasse aussehen, damit es keine Probleme gibt? Geht das überhaupt?</p>
<p>(Das ganze befindet sich im Header, also der gängige cpp-Datei-Fehler-mit-Templates ist ausgeschlossen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553617</guid><dc:creator><![CDATA[template verzweifelter]]></dc:creator><pubDate>Fri, 25 Jul 2008 13:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to template friend Funktion on Fri, 25 Jul 2008 15:34:54 GMT]]></title><description><![CDATA[<p><em>Hier stand Falsches (sorry).</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553651</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 25 Jul 2008 15:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to template friend Funktion on Fri, 25 Jul 2008 15:21:08 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Die Funktion muss vorher deklariert sein. Man spricht diesbezüglich vom Funktionsprototypen:</p>
<pre><code class="language-cpp">void funktion(int x);   // Deklaration (Prototyp)

template &lt;typename T&gt;
class A
{
     // Member
};

void funktion(int x)   // Definition
{
    // Funktionsrumpf
}
</code></pre>
<p>Wenn du die Funktion mit dem Rumpf vor der Klasse aufschreibst, hast du eine gleichzeitige Deklaration und Definition.</p>
</blockquote>
<p>Hat damit hier überhaupt nichts zu tun.<br />
Hier steht die Erklärung zu deinem Problem: <a href="http://www.parashift.com/c++-faq-lite/templates.html#faq-35.16" rel="nofollow">http://www.parashift.com/c++-faq-lite/templates.html#faq-35.16</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553678</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 25 Jul 2008 15:21:08 GMT</pubDate></item><item><title><![CDATA[Reply to template friend Funktion on Fri, 25 Jul 2008 16:02:58 GMT]]></title><description><![CDATA[<p>Hier nochmal in deutsch <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="🙂"
    /><br />
<a href="http://www.ica1.uni-stuttgart.de/Courses_and_Lectures/C++/script/node23.html#SECTION00531000000000000000" rel="nofollow">http://www.ica1.uni-stuttgart.de/Courses_and_Lectures/C++/script/node23.html#SECTION00531000000000000000</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553698</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 25 Jul 2008 16:02:58 GMT</pubDate></item><item><title><![CDATA[Reply to template friend Funktion on Fri, 25 Jul 2008 19:36:18 GMT]]></title><description><![CDATA[<p>Vielen Dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1553783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1553783</guid><dc:creator><![CDATA[der TE]]></dc:creator><pubDate>Fri, 25 Jul 2008 19:36:18 GMT</pubDate></item></channel></rss>