<?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[Ausgabe Operator bei Templates ? Linker Error .. !]]></title><description><![CDATA[<p>Hey Leute ich habe folgendes Problem .<br />
Hier der Code ..</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class TVector
{  // ......
    template &lt;class U&gt;
    friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out,const TVector&lt;U&gt;&amp; rhs); 
}; 

template &lt;class U&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out,const TVector&lt;U&gt;&amp; rhs)
{

    out &lt;&lt; &quot;BlaBla&quot;;
    return out;
}
</code></pre>
<p>Main:</p>
<pre><code class="language-cpp">....
TVector&lt;int&gt;    SecondIntTVector(19);
std::cout &lt;&lt; SecondIntTVector &lt;&lt; std::endl;
</code></pre>
<p>Der Linker sagt mir &quot;operator&lt;&lt;(...const TVector&lt;int&gt;&amp;) referenced from&quot;<br />
Warum findet er ihn nicht , habe ich irgend etwas falsch programmiert , ich komme da nicht weiter ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286923/ausgabe-operator-bei-templates-linker-error</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 18:49:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286923.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 May 2011 18:31:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 18:31:54 GMT]]></title><description><![CDATA[<p>Hey Leute ich habe folgendes Problem .<br />
Hier der Code ..</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class TVector
{  // ......
    template &lt;class U&gt;
    friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out,const TVector&lt;U&gt;&amp; rhs); 
}; 

template &lt;class U&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out,const TVector&lt;U&gt;&amp; rhs)
{

    out &lt;&lt; &quot;BlaBla&quot;;
    return out;
}
</code></pre>
<p>Main:</p>
<pre><code class="language-cpp">....
TVector&lt;int&gt;    SecondIntTVector(19);
std::cout &lt;&lt; SecondIntTVector &lt;&lt; std::endl;
</code></pre>
<p>Der Linker sagt mir &quot;operator&lt;&lt;(...const TVector&lt;int&gt;&amp;) referenced from&quot;<br />
Warum findet er ihn nicht , habe ich irgend etwas falsch programmiert , ich komme da nicht weiter ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065414</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Wed, 18 May 2011 18:31:54 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 18:39:05 GMT]]></title><description><![CDATA[<p>Der Code sieht gut aus. Gibt es evtl. Probleme mit dem Scope? Sagt dir Königs-Lookup etwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065419</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 18 May 2011 18:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 18:58:57 GMT]]></title><description><![CDATA[<p>Worum genau handelt es sich beim Königs LookUp .. ich kann echt nicht verstehen warum der Code so nicht hinhaut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065435</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Wed, 18 May 2011 18:58:57 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:00:33 GMT]]></title><description><![CDATA[<p>Bacid90210 schrieb:</p>
<blockquote>
<p>Worum genau handelt es sich beim Königs LookUp</p>
</blockquote>
<p>Sogar das deutsche Wiki hat einen Beitrag dazu!</p>
<p>Bacid90210 schrieb:</p>
<blockquote>
<p>ich kann echt nicht verstehen warum der Code so nicht hinhaut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> ..</p>
</blockquote>
<p>Er haut hin (ich habe ihn sogar getestet!)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065436</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 18 May 2011 19:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:02:48 GMT]]></title><description><![CDATA[<p>Bacid90210 schrieb:</p>
<blockquote>
<p>Der Linker sagt mir &quot;operator&lt;&lt;(...const TVector&lt;int&gt;&amp;) referenced from&quot;</p>
</blockquote>
<p>Das ist keine vollständige Fehlermeldung.</p>
<p>Templatedefinition und Aufruf in der gleichen ÜE?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065438</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 18 May 2011 19:02:48 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:06:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Undefined symbols for architecture x86_64:
  &quot;operator&lt;&lt;(std::ostream&amp;, TVector&lt;int&gt; const&amp;)&quot;, referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
</code></pre>
<p>Die Templatedef hab ich in einer header die ich wiederrum in die main einbinde , also nichts besonderes ..<br />
Und die Template-definiton liegt zusammen mit der Implementierung in der .h ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065441</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Wed, 18 May 2011 19:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:17:19 GMT]]></title><description><![CDATA[<p>Wozu eigentlich U? Würde Folgendes nicht schon reichen?</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class TVector
{  // ......
    friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out,const TVector&amp; rhs) 
    {
       out &lt;&lt; &quot;BlaBla&quot;;
       return out;
    }     
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2065448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065448</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 18 May 2011 19:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:23:18 GMT]]></title><description><![CDATA[<p>In einem anderen projekt hab ich es genauso gemacht .<br />
Und es funktioniert .<br />
Ich verstehe das einfach nicht .. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065453</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Wed, 18 May 2011 19:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:34:45 GMT]]></title><description><![CDATA[<p>Am gezeigten Code ist nicht auszusetzen. Wenn sich die Definition des Operators tatsächlich in der gleichen ÜE befindet, folgt aus dem Fehler, dass keine Instantiierung vorgenommen wurde. Das kann wiederum nur bedeuten, dass<br />
1. die ausgewählte Funktionsüberladung aus der friend-Deklaration stammt (per ADNL gefunden), und<br />
2. die Definition der Überladung nicht exakt dazu passt, z.B. im falschen Namensraum erfolgt und damit nicht gefunden wird.</p>
<p>Mach doch mal ein Copy&amp;Paste der oben gezeigten Code-Zeilen, so wie sie in deinem Projekt tatsächlich vorliegen, und poste sie hier.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065460</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 18 May 2011 19:34:45 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:47:37 GMT]]></title><description><![CDATA[<p>Jetzt haut es hin .<br />
Ich habe die Operator Definiton einfach in die main gepackt.</p>
<p><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/2065480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065480</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Wed, 18 May 2011 19:47:37 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:57:16 GMT]]></title><description><![CDATA[<p>Bacid90210 schrieb:</p>
<blockquote>
<p>Ich habe die Operator Definiton einfach in die main gepackt.</p>
</blockquote>
<p>Das ist aber eine ziemlich schlamige Problemlösung. Ist der Operator und die Klasse auch wirklich im selben Namensbereich (das hast du noch nicht bestätigt)(vor dieser Änderung)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065485</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 18 May 2011 19:57:16 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 19:54:31 GMT]]></title><description><![CDATA[<p>Bacid90210 schrieb:</p>
<blockquote>
<p>Ich habe die Operator Definiton einfach in die main gepackt.</p>
</blockquote>
<p>Du kannst keine Funktionen direkt innerhalb anderer Funktionen definieren. Entweder du hast was anderes gemacht, oder dein Compiler verstösst grob gegen den C++-Standard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065489</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 18 May 2011 19:54:31 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 21:47:17 GMT]]></title><description><![CDATA[<p>Da der operator &lt;&lt; selbst ein Template ist (was dir in diesem Fall rein gar nichts bringt) und sich in einer template-Klasse befindet, müsste der Code so aussehen:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
template &lt;typename U&gt;
std::ostream&amp; TVector&lt;T&gt;::operator &lt;&lt; (std::ostream&amp; os, const TVector&lt;U&gt;&amp; v)
{
    return ....;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2065563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065563</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 18 May 2011 21:47:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Wed, 18 May 2011 22:56:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23275">@314159265358979</a>:<br />
<strong>friend</strong></p>
<p>&lt;&lt; ist ein binärer Operator, als Klassenmember hat er deshalb stehts nur einen expliziten Parameter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065582</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 18 May 2011 22:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Thu, 19 May 2011 05:02:57 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Du kannst keine Funktionen direkt innerhalb anderer Funktionen definieren. Entweder du hast was anderes gemacht, oder dein Compiler verstösst grob gegen den C++-Standard.</p>
</blockquote>
<p>Damit meinte ich natürlich nur in die main.cpp.<br />
Danach hatte ich beim linken keine Probleme mehr.<br />
Der Code sitzt jetzt allerdings wieder in der TTemplate.h und alles funktioniert ohne Probleme.</p>
<blockquote>
<p>Da der operator &lt;&lt; selbst ein Template ist (was dir in diesem Fall rein gar nichts bringt) und sich in einer template-Klasse befindet, müsste der Code so aussehen: .....</p>
</blockquote>
<p>Dem stimme ich nicht zu.<br />
Da sich der &lt;&lt;operator auf die ostream Klasse bezieht kann ich ihn nicht explizit überladen , ich habe nämlich keinerlei Zugriff auf die Implementierung der ostream methoden. Deshalb kennzeichne ich ihn ja auch als friend und stelle ihn als globale Funktion bereit.Und damit für jeden Typ ein passender Operator vorhanden ist , handelt es sich selber nochmal um ein Template.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065601</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Thu, 19 May 2011 05:02:57 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabe Operator bei Templates ? Linker Error .. ! on Thu, 19 May 2011 07:07:28 GMT]]></title><description><![CDATA[<p>Mein Fehler, ich habe an eine template-Memberfunktion gedacht. Der muss natürlich ein Template sein. Da ein Vector aber mindestens Index-Zugriff bietet (Iteratoren solltest du auch einbauen), brauchst du ihn ja nicht als friend deklarieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065632</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 19 May 2011 07:07:28 GMT</pubDate></item></channel></rss>