<?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[Methode kann nicht gefunden werden]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>folgende Frage:</p>
<p>CSVDocument.h:</p>
<pre><code class="language-cpp">// ...
template &lt;class TToken&gt; class CSVDocument;
template &lt;class TToken&gt; std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const CSVDocument&lt;TToken&gt;&amp;);
template &lt;class TToken&gt; std::istream&amp; operator&gt;&gt;(std::istream&amp;, CSVDocument&lt;TToken&gt;&amp;);

template &lt;class TToken&gt;
class CSVDocument
{
	public:

		// ...

		friend std::ostream&amp; operator&lt;&lt; &lt;&gt;(std::ostream&amp; out, const CSVDocument&lt;TToken&gt;&amp; document);
		friend std::istream&amp; operator&gt;&gt; &lt;&gt;(std::istream&amp; in, CSVDocument&lt;TToken&gt;&amp; document);

};
</code></pre>
<p>CSVDocument.cpp:</p>
<pre><code class="language-cpp">#include &quot;CSVDocument.h&quot;

using namespace std;

// ...
template &lt;class TToken&gt;
ostream&amp; operator&lt;&lt;(ostream&amp; out, const CSVDocument&lt;TToken&gt;&amp; document)
{
	// ....
	return out;
}

template &lt;class TToken&gt;
istream&amp; operator&gt;&gt;(istream&amp; in, CSVDocument&lt;TToken&gt;&amp; document)
{
	// ...
	return in;
}

// ...
</code></pre>
<blockquote>
<p>$ make CSVDocument.o<br />
g++ -Wall -c CSVDocument.cpp CSVDocument.h</p>
</blockquote>
<p>Keine Kompilierfehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &quot;CSVDocument.h&quot;

const char* DATAFILE = &quot;data.csv&quot;;

int main(int argc, char *argv[])
{
	using namespace std;

	ifstream input(DATAFILE);
	if (!input)
	{
		cerr &lt;&lt; &quot;The data file '&quot; &lt;&lt; DATAFILE &lt;&lt; &quot;' doesn't exist.&quot; &lt;&lt; endl;
		exit(EXIT_FAILURE);
	}

	CSVDocument&lt;string&gt; document;
	input &gt;&gt; document;

	input.close();

	return EXIT_SUCCESS;
}
</code></pre>
<blockquote>
<p>$ make<br />
g++ -Wall -c Main.cpp<br />
g++ -Wall -c PNode.cpp PNode.h<br />
g++ -Wall -o mrsts CSVDocument.o Main.o PNode.o<br />
Main.o: In function <code>main': Main.cpp:(.text+0xd3): undefined reference to</code>std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; operator&gt;&gt;&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;(std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, CSVDocument&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;&amp;)'<br />
collect2: ld returned 1 exit status<br />
make: *** [mrsts] Fehler 1</p>
</blockquote>
<p>Fehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Hinweis: Der Fehler tritt auch bei anderen Methoden auf (nutzen auch den istream), nicht nur bei den operatoren.</p>
<p>Nach mehreren Stunden beim gleichen Fehler bin ich sehr genervt.<br />
Ich hatte wirklich Jahre nicht mehr mit C++ zu tun, da ich unter Java &quot;unterwegs&quot; war.</p>
<p>Habt Ihr eine Idee, wie man das Lösen kann.</p>
<p>Ich würde mich über Eure Hilfe sehr freuen.</p>
<p>Viele Grüße <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/294011/methode-kann-nicht-gefunden-werden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 02:01:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294011.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Oct 2011 20:14:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sat, 15 Oct 2011 20:14:34 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>folgende Frage:</p>
<p>CSVDocument.h:</p>
<pre><code class="language-cpp">// ...
template &lt;class TToken&gt; class CSVDocument;
template &lt;class TToken&gt; std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const CSVDocument&lt;TToken&gt;&amp;);
template &lt;class TToken&gt; std::istream&amp; operator&gt;&gt;(std::istream&amp;, CSVDocument&lt;TToken&gt;&amp;);

template &lt;class TToken&gt;
class CSVDocument
{
	public:

		// ...

		friend std::ostream&amp; operator&lt;&lt; &lt;&gt;(std::ostream&amp; out, const CSVDocument&lt;TToken&gt;&amp; document);
		friend std::istream&amp; operator&gt;&gt; &lt;&gt;(std::istream&amp; in, CSVDocument&lt;TToken&gt;&amp; document);

};
</code></pre>
<p>CSVDocument.cpp:</p>
<pre><code class="language-cpp">#include &quot;CSVDocument.h&quot;

using namespace std;

// ...
template &lt;class TToken&gt;
ostream&amp; operator&lt;&lt;(ostream&amp; out, const CSVDocument&lt;TToken&gt;&amp; document)
{
	// ....
	return out;
}

template &lt;class TToken&gt;
istream&amp; operator&gt;&gt;(istream&amp; in, CSVDocument&lt;TToken&gt;&amp; document)
{
	// ...
	return in;
}

// ...
</code></pre>
<blockquote>
<p>$ make CSVDocument.o<br />
g++ -Wall -c CSVDocument.cpp CSVDocument.h</p>
</blockquote>
<p>Keine Kompilierfehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &quot;CSVDocument.h&quot;

const char* DATAFILE = &quot;data.csv&quot;;

int main(int argc, char *argv[])
{
	using namespace std;

	ifstream input(DATAFILE);
	if (!input)
	{
		cerr &lt;&lt; &quot;The data file '&quot; &lt;&lt; DATAFILE &lt;&lt; &quot;' doesn't exist.&quot; &lt;&lt; endl;
		exit(EXIT_FAILURE);
	}

	CSVDocument&lt;string&gt; document;
	input &gt;&gt; document;

	input.close();

	return EXIT_SUCCESS;
}
</code></pre>
<blockquote>
<p>$ make<br />
g++ -Wall -c Main.cpp<br />
g++ -Wall -c PNode.cpp PNode.h<br />
g++ -Wall -o mrsts CSVDocument.o Main.o PNode.o<br />
Main.o: In function <code>main': Main.cpp:(.text+0xd3): undefined reference to</code>std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; operator&gt;&gt;&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;(std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, CSVDocument&lt;std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;&amp;)'<br />
collect2: ld returned 1 exit status<br />
make: *** [mrsts] Fehler 1</p>
</blockquote>
<p>Fehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Hinweis: Der Fehler tritt auch bei anderen Methoden auf (nutzen auch den istream), nicht nur bei den operatoren.</p>
<p>Nach mehreren Stunden beim gleichen Fehler bin ich sehr genervt.<br />
Ich hatte wirklich Jahre nicht mehr mit C++ zu tun, da ich unter Java &quot;unterwegs&quot; war.</p>
<p>Habt Ihr eine Idee, wie man das Lösen kann.</p>
<p>Ich würde mich über Eure Hilfe sehr freuen.</p>
<p>Viele Grüße <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/2131885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131885</guid><dc:creator><![CDATA[linu*x*bie]]></dc:creator><pubDate>Sat, 15 Oct 2011 20:14:34 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sat, 15 Oct 2011 20:19:09 GMT]]></title><description><![CDATA[<p>Templates und eigenständige Übersetzungseinheiten vertragen sich nicht besonders gut - der Compiler will bei Verwendung des Templates die komplette Definition sehen, damit er weiß, wie er daraus Code erzeugen soll. Die Lösung besteht darin, die Funktionen direkt im Header zu definieren (alternativ in einer IMPL-Datei, die am Ende des Headers eingebunden wird).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131887</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 15 Oct 2011 20:19:09 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sat, 15 Oct 2011 21:15:23 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a></p>
<p>Vielen Dank für Deine Antwort <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 />
Das war tatsächlich die Lösung.</p>
<p>Ich habe jetzt auf die Schnelle in der Maindatei die CSVDocument.cpp eingebunden. Wie funktioniert das mit der impl-Datei? Ist das eine cpp mit dem Suffix *.impl? Ist das eine gängige Konvention?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131917</guid><dc:creator><![CDATA[linu*x*bie]]></dc:creator><pubDate>Sat, 15 Oct 2011 21:15:23 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sat, 15 Oct 2011 21:20:34 GMT]]></title><description><![CDATA[<p>Wie die Dateien heißen, die du einbindest ist dem Compiler (bzw. Präprozessor) egal, allerdings ist CPP in den meisten Entwicklungsumgebungen für eine eigenständige Quelldatei reserviert (d.h. sie wird versuchen, sie direkt in den Compiler zu füttern). Deshalb verwendet man für solche Hilfsdateien wie in deinem Beispiel eine andere Datei-Endung (IMPL wie &quot;Implementation&quot; klingt da recht passend).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131922</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 15 Oct 2011 21:20:34 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sat, 15 Oct 2011 21:59:27 GMT]]></title><description><![CDATA[<p>Falls dein Compiler C++11 (zumindest teilweise) unterstützt, könntest du die Templates auch als extern deklarieren:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
extern void foo();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2131938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131938</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 15 Oct 2011 21:59:27 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sun, 16 Oct 2011 06:18:19 GMT]]></title><description><![CDATA[<p>Wenn Methoden nicht gefunden werden, immer erst unter dem stack nachschauen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131960</guid><dc:creator><![CDATA[Musterknabe]]></dc:creator><pubDate>Sun, 16 Oct 2011 06:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sun, 16 Oct 2011 07:11:43 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Falls dein Compiler C++11 (zumindest teilweise) unterstützt, könntest du die Templates auch als extern deklarieren:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
extern void foo();
</code></pre>
</blockquote>
<p>Erzähl doch nicht so einen Quatsch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131965</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 16 Oct 2011 07:11:43 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sun, 16 Oct 2011 08:36:40 GMT]]></title><description><![CDATA[<p>wird extern nicht nur vom comeau compiler unterstützt?!?<br />
und das auch nicht so ganz zufriedenstellend?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131973</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 16 Oct 2011 08:36:40 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sun, 16 Oct 2011 08:47:04 GMT]]></title><description><![CDATA[<p>krümelkacker hat natürlich recht, das war Quatsch. Entschuldigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131976</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 16 Oct 2011 08:47:04 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sun, 16 Oct 2011 09:35:25 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18806">@Skym0sh0</a>: Du hast extern mit export verwechselt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131990</guid><dc:creator><![CDATA[besserwisser]]></dc:creator><pubDate>Sun, 16 Oct 2011 09:35:25 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sun, 16 Oct 2011 09:55:48 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Falls dein Compiler C++11 (zumindest teilweise) unterstützt, könntest du die Templates auch als extern deklarieren:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
extern void foo();
</code></pre>
</blockquote>
<p>export statt extern.</p>
<p>Trotzdem hätte es linu(x)bie nichts geholfen.<br />
Der Comeau und der Intel Compiler sind die einzigen Compiler, die das <sub>export</sub>en von Templates beherrschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2131998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2131998</guid><dc:creator><![CDATA[Mentras]]></dc:creator><pubDate>Sun, 16 Oct 2011 09:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sun, 16 Oct 2011 09:59:14 GMT]]></title><description><![CDATA[<p>Wusste gar nicht, dass der ICC das auch kann. <code>export</code> ist seit C++11 übrigens kein Standard mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2132000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2132000</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sun, 16 Oct 2011 09:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kann nicht gefunden werden on Sun, 16 Oct 2011 10:07:15 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Wusste gar nicht, dass der ICC das auch kann.</p>
</blockquote>
<p><a href="http://software.intel.com/en-us/articles/intel-c-compiler-ansi-cc-compliance/" rel="nofollow">http://software.intel.com/en-us/articles/intel-c-compiler-ansi-cc-compliance/</a> schrieb:</p>
<blockquote>
<p>The export keyword for templates is supported in Intel<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00ae.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--registered"
      title=":registered:"
      alt="®"
    /> C++ Compiler for Linux* 8.1 or newer. It is supported in the Intel<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00ae.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--registered"
      title=":registered:"
      alt="®"
    /> C++ Compiler for Mac OS*.</p>
<p>But the export keyword for templates is not supported in the Intel<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/00ae.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--registered"
      title=":registered:"
      alt="®"
    /> C++ Compiler for Windows or the Intel Parallel Composer.</p>
</blockquote>
<p>dot schrieb:</p>
<blockquote>
<p><code>export</code> ist seit C++11 übrigens kein Standard mehr.</p>
</blockquote>
<p>Gut zu wissen...!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2132002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2132002</guid><dc:creator><![CDATA[Mentras]]></dc:creator><pubDate>Sun, 16 Oct 2011 10:07:15 GMT</pubDate></item></channel></rss>