<?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 kein zugriff auf Parentmember]]></title><description><![CDATA[<p>also ich habe folgendes Problem das compiled so weit aber nutze ich z.b.<br />
tPPool&lt; XXX &gt;::getSingleton();</p>
<p>bekomm ich einen linker error &quot;Nicht aufgelöstes externes Symbol protected: static class tPPool&lt;class XXX&gt; * Singleton&lt;class tPPool&lt;class XXX&gt; &gt;::my_singleton&quot;</p>
<p>also ich erbe ja sämtliche public member von Singleton doch selbst wenn ich jetzt tPPool sagen würde &quot;static tTemplateType* my_singleton&quot; meckert er genauso rum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Ich habe solangsam das Gefühl der fehler liegt an den __forceinline, vielleicht verhalten sich templates die ja zur compilezeit generiert werden bei der inline eigenschaft etwas anders und sie kopieren die funktion von der parentclass runter als ob sie diese privat definiert haben</p>
<p>ich könnte ja freund von singleton werden aber das wäre ziemlich lapidar</p>
<p>wo liegt mein denkfehler? <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>ach ja bevor jemand auf das FAQ verweist, ja beide klassen sind im selben header und dort definiert ^^</p>
<pre><code class="language-cpp">template&lt; class _MainType &gt; class tPPool : public Singleton&lt; tPPool&lt; _MainType &gt; &gt;
{
	typedef tPPool&lt; _MainType &gt; tTemplateType;
public:
	tPPool() : Singleton()
	{
	...
	}
...
}
</code></pre>
<pre><code class="language-cpp">template &lt; class _MainType &gt; class __declspec(dllexport) Singleton
{
public:
  Singleton() 
  {
    Assert( _MainType == NULL );
    my_singleton = static_cast&lt;_MainType*&gt;(this);
  }
  virtual ~Singleton( ) { my_singleton = NULL; }

  __forceinline static _MainType &amp;getSingleton()
  {
    Assert( my_singleton );
    return my_singleton;
  }
protected:
  static _MainType* my_singleton;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/219715/template-kein-zugriff-auf-parentmember</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 19:03:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219715.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Aug 2008 17:09:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template kein zugriff auf Parentmember on Wed, 06 Aug 2008 17:50:27 GMT]]></title><description><![CDATA[<p>also ich habe folgendes Problem das compiled so weit aber nutze ich z.b.<br />
tPPool&lt; XXX &gt;::getSingleton();</p>
<p>bekomm ich einen linker error &quot;Nicht aufgelöstes externes Symbol protected: static class tPPool&lt;class XXX&gt; * Singleton&lt;class tPPool&lt;class XXX&gt; &gt;::my_singleton&quot;</p>
<p>also ich erbe ja sämtliche public member von Singleton doch selbst wenn ich jetzt tPPool sagen würde &quot;static tTemplateType* my_singleton&quot; meckert er genauso rum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>Ich habe solangsam das Gefühl der fehler liegt an den __forceinline, vielleicht verhalten sich templates die ja zur compilezeit generiert werden bei der inline eigenschaft etwas anders und sie kopieren die funktion von der parentclass runter als ob sie diese privat definiert haben</p>
<p>ich könnte ja freund von singleton werden aber das wäre ziemlich lapidar</p>
<p>wo liegt mein denkfehler? <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>ach ja bevor jemand auf das FAQ verweist, ja beide klassen sind im selben header und dort definiert ^^</p>
<pre><code class="language-cpp">template&lt; class _MainType &gt; class tPPool : public Singleton&lt; tPPool&lt; _MainType &gt; &gt;
{
	typedef tPPool&lt; _MainType &gt; tTemplateType;
public:
	tPPool() : Singleton()
	{
	...
	}
...
}
</code></pre>
<pre><code class="language-cpp">template &lt; class _MainType &gt; class __declspec(dllexport) Singleton
{
public:
  Singleton() 
  {
    Assert( _MainType == NULL );
    my_singleton = static_cast&lt;_MainType*&gt;(this);
  }
  virtual ~Singleton( ) { my_singleton = NULL; }

  __forceinline static _MainType &amp;getSingleton()
  {
    Assert( my_singleton );
    return my_singleton;
  }
protected:
  static _MainType* my_singleton;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1560366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560366</guid><dc:creator><![CDATA[FoxDie]]></dc:creator><pubDate>Wed, 06 Aug 2008 17:50:27 GMT</pubDate></item><item><title><![CDATA[Reply to Template kein zugriff auf Parentmember on Wed, 06 Aug 2008 19:26:14 GMT]]></title><description><![CDATA[<p>dir ist schon klar, dass du Klassentemplates und Funktionstemplates nicht in DLLs packen kannst oder? Das geht höchstens bei fertig instantiierten templatefunktionen und selbst da bin ich mir nicht ganz sicher. Wozu also das dllexport etc? lass das alles erstmal weg, genauso das __forceinline und schau obs dann kompiliert.</p>
<p>Bei Zugriff auf Parentmember muss man diese explizit qualifizieren, wenn die Vaterklasse ein abhängiges Template ist, entweder mit this-&gt; oder indem man die Vaterklasse explizit angibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560439</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 06 Aug 2008 19:26:14 GMT</pubDate></item><item><title><![CDATA[Reply to Template kein zugriff auf Parentmember on Wed, 06 Aug 2008 19:37:33 GMT]]></title><description><![CDATA[<blockquote>
<p>dir ist schon klar, dass du Klassentemplates und Funktionstemplates nicht in DLLs packen kannst oder?</p>
</blockquote>
<p>ja das ist es, aber die nicht template klassen die Singleton nutzen tun es darum das dllexport. ausserdem so denke ich sind templates wohl in einer dll verfügbar sofern ein referenztyp bereits im hauptprogramm verwendet wird.</p>
<blockquote>
<p>__forceinline</p>
</blockquote>
<p>das forceinline ist zur geschwindigkeits optimierung da diese funktion wirklich sehr oft gecalled wird und somit meines erachtens nach laufzeit gespart wird.<br />
desweiteren hab ich jetzt das inline mal rausgenommen trotzdem selber fehler geblieben also das war nicht der grund ^^</p>
<blockquote>
<p>Bei Zugriff auf Parentmember muss man diese explizit qualifizieren, wenn die Vaterklasse ein abhängiges Template ist, entweder mit this-&gt; oder indem man die Vaterklasse explizit angibt.</p>
</blockquote>
<p>das klingt logisch, das könnte ich mal probieren <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/1560444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560444</guid><dc:creator><![CDATA[FoxDie]]></dc:creator><pubDate>Wed, 06 Aug 2008 19:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to Template kein zugriff auf Parentmember on Wed, 06 Aug 2008 19:47:56 GMT]]></title><description><![CDATA[<blockquote>
<p>bekomm ich einen linker error &quot;Nicht aufgelöstes externes Symbol protected: static class tPPool&lt;class XXX&gt; * Singleton&lt;class tPPool&lt;class XXX&gt; &gt;::my_singleton&quot;</p>
</blockquote>
<p>irgendwo wirst du my_singleton auch definieren müssen (statische Datenmember werden in einer Klassendefinition bloß deklariert). Das kann und sollte ebenfalls im Header geschehen, damit der Member auch implizit instantiiert wird (wenn irgendeine der gezeigten Memberfunktionen instantiiert wird. Also</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
T* Singleton&lt;T&gt;::my_singleton = 0;
</code></pre>
<p>Bezeichner, die mit einem Unterstrich und folgendem Großbuchstaben beginnen, sind im Übrigen für die Implementation des Compiler bzw. der Standardbibliothek reserviert und dürfen sonst nicht verwendet werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1560448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560448</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 06 Aug 2008 19:47:56 GMT</pubDate></item><item><title><![CDATA[Reply to Template kein zugriff auf Parentmember on Wed, 06 Aug 2008 20:11:14 GMT]]></title><description><![CDATA[<blockquote>
<p>irgendwo wirst du my_singleton auch definieren müssen (statische Datenmember werden in einer Klassendefinition bloß deklariert). Das kann und sollte ebenfalls im Header geschehen, damit der Member auch implizit instantiiert wird (wenn irgendeine der gezeigten Memberfunktionen instantiiert wird. Also</p>
</blockquote>
<p>genau das war der knackpunkt, ich hab ganz einfach vergessen die statische variable zu initialisieren ^^</p>
<pre><code class="language-cpp">template &lt;&gt; tPPool&lt; XXX &gt;* Singleton &lt; tPPool&lt; XXX &gt; &gt;::my_singleton = NULL;
</code></pre>
<p>sehr geniale überlegung von dir ich hab den wald vor lauter bäumen nicht mehr gesehen, vielen lieben dank <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/1560459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1560459</guid><dc:creator><![CDATA[FoxDie]]></dc:creator><pubDate>Wed, 06 Aug 2008 20:11:14 GMT</pubDate></item></channel></rss>