<?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[Problem mit Templates]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab hier folgende Klasse für Arrays geschrieben:</p>
<pre><code class="language-cpp">template&lt;class ItemClass&gt;
class CUnsafeArray
{
public: //public methods

protected: //protected methods

public: //public data

protected: //protected data
};

template&lt;class ItemClass&gt;
class CSafeArray : CUnsafeArray&lt;ItemClass&gt;
{

};
</code></pre>
<p>So und jetzt möchte ich, dass wenn _DEBUG oder XXT_ONLY_SAFE_ARRAYS definiert ist, dass dann die Klasse CArray immer die Klasse CSafeArray ist,<br />
ansonsten sollte CArray die Klasse CUnsafeArray sein:</p>
<pre><code class="language-cpp">//Now choose what CArray should be, safe or unsafe
#if defined(_DEBUG) || defined(XXT_ONLY_SAFE_ARRAYS)
	#define CArray CSafeArray;
#else
	#define CArray CUnsafeArray;
#endif
</code></pre>
<p>Das klappt jetzt leider nicht, bei</p>
<pre><code class="language-cpp">CArray &lt; int &gt; test_array;
</code></pre>
<p>gibts diese Fehlermeldung</p>
<blockquote>
<p>'XenesisXT::CSafeArray' : use of class template requires template argument list<br />
syntax error : missing ';' before '&lt;'</p>
</blockquote>
<p>Wenn ich dagegen CSafeArray statt CArray schreibe gehts <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>Hat jemand ne Idee wie ich das realisieren könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174975/problem-mit-templates</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 00:18:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174975.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Mar 2007 19:54:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Templates on Mon, 05 Mar 2007 19:54:04 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab hier folgende Klasse für Arrays geschrieben:</p>
<pre><code class="language-cpp">template&lt;class ItemClass&gt;
class CUnsafeArray
{
public: //public methods

protected: //protected methods

public: //public data

protected: //protected data
};

template&lt;class ItemClass&gt;
class CSafeArray : CUnsafeArray&lt;ItemClass&gt;
{

};
</code></pre>
<p>So und jetzt möchte ich, dass wenn _DEBUG oder XXT_ONLY_SAFE_ARRAYS definiert ist, dass dann die Klasse CArray immer die Klasse CSafeArray ist,<br />
ansonsten sollte CArray die Klasse CUnsafeArray sein:</p>
<pre><code class="language-cpp">//Now choose what CArray should be, safe or unsafe
#if defined(_DEBUG) || defined(XXT_ONLY_SAFE_ARRAYS)
	#define CArray CSafeArray;
#else
	#define CArray CUnsafeArray;
#endif
</code></pre>
<p>Das klappt jetzt leider nicht, bei</p>
<pre><code class="language-cpp">CArray &lt; int &gt; test_array;
</code></pre>
<p>gibts diese Fehlermeldung</p>
<blockquote>
<p>'XenesisXT::CSafeArray' : use of class template requires template argument list<br />
syntax error : missing ';' before '&lt;'</p>
</blockquote>
<p>Wenn ich dagegen CSafeArray statt CArray schreibe gehts <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>Hat jemand ne Idee wie ich das realisieren könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1239825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1239825</guid><dc:creator><![CDATA[XCooperation]]></dc:creator><pubDate>Mon, 05 Mar 2007 19:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates on Mon, 05 Mar 2007 20:08:24 GMT]]></title><description><![CDATA[<p>Nuja, mach doch mal die &quot;;&quot; hinter dem define weg <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/1239835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1239835</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 05 Mar 2007 20:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates on Mon, 05 Mar 2007 20:10:24 GMT]]></title><description><![CDATA[<p>Ich weiß nicht, was das Problem ist (ich vermute mal, eine fehlende Namensbereichs-Angabe) aber Makros halte ich hier für die falsche Lösung. Ich würde das über eine Metafunktion machen:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct CArray {
#if defined(_DEBUG) || defined(XXT_ONLY_SAFE_ARRAYS)
    typedef CSafeArray&lt;T&gt; result;
#else
    typedef CUnsafeArray&lt;T&gt; result;
#endif
};

// und Instanzierung:

CArray&lt;int&gt;::result test_array;
</code></pre>
<p>PS: Wozu das Präfix 'C'? Dass es sich um Klassen handelt, sollte irrelevant sein und ist außerdem gelogen ('CArray' ist bei Dir kein Typ sondern ein Makro).</p>
<p>/EDIT: Reihenfolge vertauscht ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1239836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1239836</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 05 Mar 2007 20:10:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates on Mon, 05 Mar 2007 20:43:43 GMT]]></title><description><![CDATA[<p>Jop, stimmt, das böse ; wars <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a> Rudolph: Naja, die Lösung is ja auch nicht gerade intuitiv.<br />
Ich würds ja sehr gerne mit typdef machen (hab ich auch zuerst versucht, deswegen stand da auch ein ; ), aber wenn's nicht geht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1239875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1239875</guid><dc:creator><![CDATA[XCooperation]]></dc:creator><pubDate>Mon, 05 Mar 2007 20:43:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Templates on Mon, 05 Mar 2007 21:22:26 GMT]]></title><description><![CDATA[<p>XCooperation schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a> Rudolph: Naja, die Lösung is ja auch nicht gerade intuitiv.</p>
</blockquote>
<p>Nein, intuitiv nicht unbedingt. Aber sie ist inzwischen in einigen Kreisen bereits ein Idiom, d.h. jeder, der in ihren Sinn &quot;eingeweiht&quot; ist, erkennt das Konstrukt sofort. In der Spirit- und der Loki-Bibliothek werden solche Dinger am laufenden Band verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1239905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1239905</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 05 Mar 2007 21:22:26 GMT</pubDate></item></channel></rss>