<?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 Anfänger-Frage]]></title><description><![CDATA[<p>Hi leute,</p>
<p>ich hab ein kleines Problem mit Templates.<br />
Ich wollte zu Beginn ein kleines Template Beispiel codieren.</p>
<p>Hier mein Code:</p>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;container.h&quot;

int main(int argc, char *argv[]) {
	int *myInt = new int(2);
	Container&lt;int&gt; myContainer(myInt);
	std::cout &lt;&lt; &quot;myStr von myContainer: &quot; &lt;&lt; myContainer.getValue() &lt;&lt; std::endl;
	delete myInt;
	return 0;
}
</code></pre>
<p>container.h</p>
<pre><code>#ifndef CONTAINER_H_
#define CONTAINER_H_

template &lt;typename T&gt; class Container {
private:
	T *value;
public:
	Container();
	Container(T *value);
	~Container();
	T getValue();
	void setValue(T *value);
};

#endif
</code></pre>
<p>container.cpp</p>
<pre><code>#include &quot;container.h&quot;

template&lt;typename T&gt;
Container&lt;T&gt;::Container() {
	*value = new T();
}

template&lt;typename T&gt;
Container&lt;T&gt;::Container(T *a_value) {
	*this-&gt;value = *a_value;
}

template&lt;typename T&gt;
void Container&lt;T&gt;::setValue(T *a_value) {
	*this-&gt;value = *a_value;
}

template&lt;typename T&gt;
T Container&lt;T&gt;::getValue() {
	return *this-&gt;value;
}

template&lt;typename T&gt;
Container&lt;T&gt;::~Container() {
	delete value;
}
</code></pre>
<p>irgendwie bring ich das ding nicht zum laufen. Visual C++ bringt diesen Fehler:</p>
<pre><code>Testumgebung error LNK2019: Nicht aufgelöstes externes Symbol '&quot;public: __thiscall Container&lt;int&gt;::~Container&lt;int&gt;(void)&quot; (??1?$Container@H@@QAE@XZ)', verwiesen in Funktion '_main'
</code></pre>
<pre><code>Testumgebung error LNK2019: Nicht aufgelöstes externes Symbol '&quot;public: int __thiscall Container&lt;int&gt;::getValue(void)&quot; (?getValue@?$Container@H@@QAEHXZ)', verwiesen in Funktion '_main'
</code></pre>
<p>etc.</p>
<p>Ich hoffe einer kann mir hier weiterhelfen und mir vielleicht einen Tipp geben wie ich das Teil zum laufen bringe.</p>
<p>Danke. mfg byte</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160061/template-anfänger-frage</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 04:39:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160061.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Sep 2006 14:52:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 14:52:23 GMT]]></title><description><![CDATA[<p>Hi leute,</p>
<p>ich hab ein kleines Problem mit Templates.<br />
Ich wollte zu Beginn ein kleines Template Beispiel codieren.</p>
<p>Hier mein Code:</p>
<p>main.cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;container.h&quot;

int main(int argc, char *argv[]) {
	int *myInt = new int(2);
	Container&lt;int&gt; myContainer(myInt);
	std::cout &lt;&lt; &quot;myStr von myContainer: &quot; &lt;&lt; myContainer.getValue() &lt;&lt; std::endl;
	delete myInt;
	return 0;
}
</code></pre>
<p>container.h</p>
<pre><code>#ifndef CONTAINER_H_
#define CONTAINER_H_

template &lt;typename T&gt; class Container {
private:
	T *value;
public:
	Container();
	Container(T *value);
	~Container();
	T getValue();
	void setValue(T *value);
};

#endif
</code></pre>
<p>container.cpp</p>
<pre><code>#include &quot;container.h&quot;

template&lt;typename T&gt;
Container&lt;T&gt;::Container() {
	*value = new T();
}

template&lt;typename T&gt;
Container&lt;T&gt;::Container(T *a_value) {
	*this-&gt;value = *a_value;
}

template&lt;typename T&gt;
void Container&lt;T&gt;::setValue(T *a_value) {
	*this-&gt;value = *a_value;
}

template&lt;typename T&gt;
T Container&lt;T&gt;::getValue() {
	return *this-&gt;value;
}

template&lt;typename T&gt;
Container&lt;T&gt;::~Container() {
	delete value;
}
</code></pre>
<p>irgendwie bring ich das ding nicht zum laufen. Visual C++ bringt diesen Fehler:</p>
<pre><code>Testumgebung error LNK2019: Nicht aufgelöstes externes Symbol '&quot;public: __thiscall Container&lt;int&gt;::~Container&lt;int&gt;(void)&quot; (??1?$Container@H@@QAE@XZ)', verwiesen in Funktion '_main'
</code></pre>
<pre><code>Testumgebung error LNK2019: Nicht aufgelöstes externes Symbol '&quot;public: int __thiscall Container&lt;int&gt;::getValue(void)&quot; (?getValue@?$Container@H@@QAEHXZ)', verwiesen in Funktion '_main'
</code></pre>
<p>etc.</p>
<p>Ich hoffe einer kann mir hier weiterhelfen und mir vielleicht einen Tipp geben wie ich das Teil zum laufen bringe.</p>
<p>Danke. mfg byte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1141940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141940</guid><dc:creator><![CDATA[ByteRix]]></dc:creator><pubDate>Thu, 21 Sep 2006 14:52:23 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 14:56:34 GMT]]></title><description><![CDATA[<p>Definition und Deklaration in den Header packen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1141943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141943</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 21 Sep 2006 14:56:34 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 14:58:56 GMT]]></title><description><![CDATA[<p>Hm...<br />
im prinzip richtig,</p>
<p>benenne aber mal lieber die .cpp in z.B. .impl um und includiere das im Container.h - hilft wenn mal die Zeit kommt in der export auch untersützt wird <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>
<p>(Der Compiler erstellt im Prinzip den Quellcode an der Stelle an der er benötigt wird. Aus Deinem Template wird eine konrekte Klasse mit passenden Typ(en) erzeugt. Wenn der Container.cpp compilieren würde, wüsste er garnicht für welche Typen dies alles geschehen soll).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1141945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141945</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Thu, 21 Sep 2006 14:58:56 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 15:00:33 GMT]]></title><description><![CDATA[<p>oder in der container.cpp explizit instantiieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1141949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141949</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 21 Sep 2006 15:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 15:07:19 GMT]]></title><description><![CDATA[<p>Was sich in der Praxis wohl nich machen lässt und dem Template entgegen wirkt, denn weil wir genau das nicht machen wollen, nutzen wir doch das Template</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1141953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1141953</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Thu, 21 Sep 2006 15:07:19 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 17:05:43 GMT]]></title><description><![CDATA[<p>hmm also irgendwie klappt das immer nocht nichtl.<br />
Vielleicht noch einen Tipp irgendjemand?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/184">@Knuddlbaer</a><br />
ehhmmm hä ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>mgf byte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142026</guid><dc:creator><![CDATA[ByteRix]]></dc:creator><pubDate>Thu, 21 Sep 2006 17:05:43 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 17:18:15 GMT]]></title><description><![CDATA[<p>Dasda</p>
<p>ByteRix schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt;typename T&gt;
Container&lt;T&gt;::Container() {
	*value = new T();
}

template&lt;typename T&gt;
Container&lt;T&gt;::Container(T *a_value) {
	*this-&gt;value = *a_value;
}

template&lt;typename T&gt;
void Container&lt;T&gt;::setValue(T *a_value) {
	*this-&gt;value = *a_value;
}

template&lt;typename T&gt;
T Container&lt;T&gt;::getValue() {
	return *this-&gt;value;
}

template&lt;typename T&gt;
Container&lt;T&gt;::~Container() {
	delete value;
}
</code></pre>
</blockquote>
<p>in den Header!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142031</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 21 Sep 2006 17:18:15 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 17:34:00 GMT]]></title><description><![CDATA[<p>ah ok danke funktioniert <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>
<p>aber ist es dann gar nicht möglich die Definition(Implementierung) in eine extra cpp auszulagern bei templates?</p>
<p>mfg byte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142039</guid><dc:creator><![CDATA[ByteRix]]></dc:creator><pubDate>Thu, 21 Sep 2006 17:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Thu, 21 Sep 2006 17:41:39 GMT]]></title><description><![CDATA[<p>derzeit unterstützen das die Compiler nicht (es mag bereits ausnahmen geben).</p>
<p>Daher bietet es sich immer an die .cpp umzubenennen und per include an den header zu packen. Dann kann man das später leichter auftrennen <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/1142050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142050</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Thu, 21 Sep 2006 17:41:39 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Fri, 22 Sep 2006 06:09:53 GMT]]></title><description><![CDATA[<p>fragen stehen als kommentar</p>
<p>ByteRix schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt;typename T&gt;
Container&lt;T&gt;::Container() {
	*value = new T();             //wieso hier *value und nicht nur value?
}

template&lt;typename T&gt;
Container&lt;T&gt;::Container(T *a_value) {
	*this-&gt;value = *a_value;      //same bei this und a_value;
}

template&lt;typename T&gt;
void Container&lt;T&gt;::setValue(T *a_value) {
	*this-&gt;value = *a_value;     //same
}

template&lt;typename T&gt;
T Container&lt;T&gt;::getValue() {
	return *this-&gt;value;        //same
}

template&lt;typename T&gt;
Container&lt;T&gt;::~Container() {
	delete value;
}
</code></pre>
</blockquote>
<p>denn ich habe das ja immer so gemacht:</p>
<p>[cpp]<br />
muss das da so sein?<br />
wenn ja warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142292</guid><dc:creator><![CDATA[anfänger?!]]></dc:creator><pubDate>Fri, 22 Sep 2006 06:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Fri, 22 Sep 2006 06:53:49 GMT]]></title><description><![CDATA[<p>Knuddlbaer schrieb:</p>
<blockquote>
<p>derzeit unterstützen das die Compiler nicht (es mag bereits ausnahmen geben)....</p>
</blockquote>
<p>Wobei man fairerweise sagen muß, dass dazu das Schlüsselwort &quot;export&quot; zu verwenden wäre und es Compiler/Linker bei templates nicht so &quot;automatisch&quot; machen sollen (vom Standard her gesehen) wie bei Funktionen und Klassen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1142304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142304</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 22 Sep 2006 06:53:49 GMT</pubDate></item><item><title><![CDATA[Reply to Template Anfänger-Frage on Fri, 22 Sep 2006 07:14:53 GMT]]></title><description><![CDATA[<p>Value ist bei Dir ein Zeiger. Um dessen Wert zu ändern muss dieser dereferenziert werden, dazu das * davor.</p>
<pre><code class="language-cpp">T *value;

value=0x4711; // Adresse von Value ändern
*Value=0x4711; // Den Wert von Value ändern
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1142316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1142316</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Fri, 22 Sep 2006 07:14:53 GMT</pubDate></item></channel></rss>