<?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[Templates]]></title><description><![CDATA[<p>Ich hab mal ne Frage zu Templates:</p>
<p>Angenommen ich hab ein Klassentemplate Blub&lt;class T&gt; in der Datei template.h und außerdem zwei Dateien a.cpp und b.cpp, die beide Blub&lt;double&gt; nutzen. Beim Kompilieren wird nun jeweils expliziter Code für Blub&lt;double&gt; erstellt und zwar sowohl in der a.o als auch in der b.o (ist das so überhaupt richtig?).</p>
<p>Die erste Frage ist nun, wieso bzw. wie der Linker damit klar kommt (also wie das Problem in gängigen Compilern gelöst wirddouble&gt; nu). Schließlich exitiert der Code für Blub&lt;n zwei mal. Würde ich eine normale (non-template) Klasse XY in template.h inklusive Methoden definieren (und nicht nur deklarieren), gäbe es beim Linken Probleme, da mehrere Definitionen vorliegen.</p>
<p>Noch interessanter wird es, wenn man nun die template.h ändert und nur a.cpp nur neu kompiliert und anschließend alles linkt. Ich hatte nun den Fall, dass auch für die Funktion in der a.cpp der alte template.h-Code benutzt wurde (dieser ist ja über die b.o immer noch vorhanden).</p>
<p>Vielleicht könntet ihr mich da ein wenig aufklären, damit ich das Verhalten genauer nachvollziehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317556/templates</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 18:49:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317556.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Jun 2013 15:24:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates on Wed, 12 Jun 2013 15:24:11 GMT]]></title><description><![CDATA[<p>Ich hab mal ne Frage zu Templates:</p>
<p>Angenommen ich hab ein Klassentemplate Blub&lt;class T&gt; in der Datei template.h und außerdem zwei Dateien a.cpp und b.cpp, die beide Blub&lt;double&gt; nutzen. Beim Kompilieren wird nun jeweils expliziter Code für Blub&lt;double&gt; erstellt und zwar sowohl in der a.o als auch in der b.o (ist das so überhaupt richtig?).</p>
<p>Die erste Frage ist nun, wieso bzw. wie der Linker damit klar kommt (also wie das Problem in gängigen Compilern gelöst wirddouble&gt; nu). Schließlich exitiert der Code für Blub&lt;n zwei mal. Würde ich eine normale (non-template) Klasse XY in template.h inklusive Methoden definieren (und nicht nur deklarieren), gäbe es beim Linken Probleme, da mehrere Definitionen vorliegen.</p>
<p>Noch interessanter wird es, wenn man nun die template.h ändert und nur a.cpp nur neu kompiliert und anschließend alles linkt. Ich hatte nun den Fall, dass auch für die Funktion in der a.cpp der alte template.h-Code benutzt wurde (dieser ist ja über die b.o immer noch vorhanden).</p>
<p>Vielleicht könntet ihr mich da ein wenig aufklären, damit ich das Verhalten genauer nachvollziehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2330629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2330629</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Wed, 12 Jun 2013 15:24:11 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Wed, 12 Jun 2013 15:35:17 GMT]]></title><description><![CDATA[<p>Eines meiner Lieblingsbegriffe: Vague Linkage -- <a href="http://gcc.gnu.org/onlinedocs/gcc/Vague-Linkage.html" rel="nofollow">http://gcc.gnu.org/onlinedocs/gcc/Vague-Linkage.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2330632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2330632</guid><dc:creator><![CDATA[vaguna]]></dc:creator><pubDate>Wed, 12 Jun 2013 15:35:17 GMT</pubDate></item></channel></rss>