<?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[Unresolved External bei template + static]]></title><description><![CDATA[<p>Ich habe folgende Kalsse:</p>
<pre><code class="language-cpp">template&lt;class T&gt; class Test{
  public:

    static Test* p;

    Test(void)
    {
      p = this;
    }

};
</code></pre>
<p>Wieso darf ich hier nicht auf die statische Variable zugreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/131766/unresolved-external-bei-template-static</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 09:11:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131766.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jan 2006 17:32:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unresolved External bei template + static on Thu, 05 Jan 2006 17:32:42 GMT]]></title><description><![CDATA[<p>Ich habe folgende Kalsse:</p>
<pre><code class="language-cpp">template&lt;class T&gt; class Test{
  public:

    static Test* p;

    Test(void)
    {
      p = this;
    }

};
</code></pre>
<p>Wieso darf ich hier nicht auf die statische Variable zugreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958033</guid><dc:creator><![CDATA[spirit monger]]></dc:creator><pubDate>Thu, 05 Jan 2006 17:32:42 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Thu, 05 Jan 2006 17:52:37 GMT]]></title><description><![CDATA[<p>In einer Datei muss folgendes stehen:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
Test&lt;T&gt;* Test&lt;T&gt;::p = 0;
</code></pre>
<p>/edit hihi, da mischt sich der :p smiley ein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958058</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 05 Jan 2006 17:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Thu, 05 Jan 2006 18:01:38 GMT]]></title><description><![CDATA[<p>Vielen Dank.<br />
Hatte genau das schon probiert, nur leider nicht mit der richtigen Syntax <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Mal rein technisch gesehen: Warum braucht der Compiler da diese Initialisierung in der Implementierung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958082</guid><dc:creator><![CDATA[spirit monger]]></dc:creator><pubDate>Thu, 05 Jan 2006 18:01:38 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Fri, 06 Jan 2006 06:01:45 GMT]]></title><description><![CDATA[<p>Kann das keiner erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958408</guid><dc:creator><![CDATA[spirit monger]]></dc:creator><pubDate>Fri, 06 Jan 2006 06:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Fri, 06 Jan 2006 08:17:29 GMT]]></title><description><![CDATA[<p>Um zu wissen wo die Variable angelegt werden soll. Ansonsten wäre der Compiler gezwungen überall dort wo das Header includiert wird die Variable anzulegen und das könnte unter umständen problematisch sein....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958441</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Fri, 06 Jan 2006 08:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Fri, 06 Jan 2006 13:35:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Warum braucht der Compiler da diese Initialisierung in der Implementierung?</p>
</blockquote>
<p>Der Compiler braucht nicht unbedingt eine Initialisierung sondern eine Definition. Der Grund dafür ist ganz einfach, dass es sich bei der Nennung einer statischen Variable innerhalb einer Klassendefinition erstmal nur um eine Deklaration handelt und eine solche noch keinen Speicher für die Variable bereitstellt.</p>
<p>Das ganze ist unabhängig von Templates. Siehe:</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39471.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39471.html</a></p>
<p>Der Unterschied bei Templates ist nur, dass die Definition überall sichtbar sein muss und deshalb auch in der Header-Datei endet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958753</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 06 Jan 2006 13:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Fri, 06 Jan 2006 14:06:18 GMT]]></title><description><![CDATA[<p>Hmm, gibt das dann keinen Linkerfehler und wenn ja, wieso nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958791</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 06 Jan 2006 14:06:18 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Fri, 06 Jan 2006 23:33:25 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Hmm, gibt das dann keinen Linkerfehler und wenn ja, wieso nicht?</p>
</blockquote>
<p>Wann? Wenn du die Definition im Header schreibst? Nein, dann gibt es keinen Linkerfehler. Der Grund dafür ist der, dass für Templates andere ODR (one definition rule)-Regeln gelten. Template-Definitionen dürfen einmal pro Übersetzungseinheit existieren. Es ist Aufgabe des Compilerherstellers dafür zu sorgen, dass am Ende im Programm nur genau eine Definition existiert. Auf jeden Fall muss die Definition überall dort sichtbar sein, wo sie benutzt wird. Ansonsten kommt es zu Linkerfehlern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/959232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/959232</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 06 Jan 2006 23:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Sat, 07 Jan 2006 11:52:10 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Der Grund dafür ist der, dass für Templates andere ODR (one definition rule)-Regeln gelten.</p>
</blockquote>
<p>Wo werden diese Regeln im Standard beschrieben? Aus dem ersten Blick auf das Inhaltsverzeichnis werde ich noch nicht ganz schlau. -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/959474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/959474</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Sat, 07 Jan 2006 11:52:10 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Sun, 08 Jan 2006 16:49:02 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Der Grund dafür ist der, dass für Templates andere ODR (one definition rule)-Regeln gelten.</p>
</blockquote>
<p>Wo werden diese Regeln im Standard beschrieben? Aus dem ersten Blick auf das Inhaltsverzeichnis werde ich noch nicht ganz schlau. -.-</p>
</blockquote>
<p>Was hälst du z.B. von 3.2/5?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960827</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sun, 08 Jan 2006 16:49:02 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Sun, 08 Jan 2006 17:58:55 GMT]]></title><description><![CDATA[<p>*an den Kopf fass* Ich hab das <a href="http://14.er" rel="nofollow">14.er</a> Kapitel komplett umgegraben... warum so einfach <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/960960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960960</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Sun, 08 Jan 2006 17:58:55 GMT</pubDate></item><item><title><![CDATA[Reply to Unresolved External bei template + static on Sun, 08 Jan 2006 19:24:53 GMT]]></title><description><![CDATA[<p>spirit monger schrieb:</p>
<blockquote>
<p>Mal rein technisch gesehen: Warum braucht der Compiler da diese Initialisierung in der Implementierung?</p>
</blockquote>
<p>Normallerweise benutzt man das Templatemodel wie Hume es vorgestellt hat. Das heißt Deklaration und Definition in jede Datei. In diesem Fall braucht der Compiler, aus technischer Sicht, diese Definition nicht da sie, abgesehen von der Initialisierung, keine weiteren Informationen bereit hält. Da ja sowohl Deklaration und Definition in jeder Datei sind impliziert die Existente einer Deklaration, im Gegensatz zu normalen Klassen, ja auch die Definition. Allerdings gibt es noch andere Templatemodele : Explizite Instanzirung und export. Bei beiden wird eine Deklaration nicht immer von einer Definition begleitet und daher spielt diese Definition bei ihnen schon eine technische Rolle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/961129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961129</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Sun, 08 Jan 2006 19:24:53 GMT</pubDate></item></channel></rss>