<?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[C++ Variable Parameter Liste]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hätte gerne eine Variable Parameterliste,<br />
dessen Anzahl von einem Templateparameter abhängt.<br />
Etwa:</p>
<pre><code class="language-cpp">template &lt;typename T1,size_t Dimension&gt;
class leaf{

public:
    leaf(size_t _d=Dimension,...);

private:
    size_t _D;

};
</code></pre>
<p>Es soll aber so sein, dass der Benutzer der Templateklasse beim Templateinstanzieren die Dimension mitgeben soll, aber dann beim wirklichen Konstruktoraufruf, lediglich so viele Aurgumente übergeben soll, wie er dann auch als Dimension übergeben hat.<br />
Z.B.:</p>
<pre><code class="language-cpp">/// Benutzen von leaf temp. instanz
leaf&lt; double, 3&gt; _leaf = new leaf(0.0,0.1,0.2);
leaf&lt; double, 1&gt; _leaf = new leaf(0.0);
leaf&lt; double, 4&gt; _leaf = new leaf(0.0,0.0,0.1,0.2);

/// Aber nicht
leaf&lt; double, 2&gt; _leaf = new leaf(2,1.0,0.0);
</code></pre>
<p>P.s.: ich bin mir daüber im klaren, dass es für das Problem andere Lösungen gibt. Die kenne ich aber schon. Ich interessiere mich tatsächlich ausschließlich für die Lösung.... =)...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287755/c-variable-parameter-liste</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 07:50:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287755.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Jun 2011 13:03:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 13:03:33 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich hätte gerne eine Variable Parameterliste,<br />
dessen Anzahl von einem Templateparameter abhängt.<br />
Etwa:</p>
<pre><code class="language-cpp">template &lt;typename T1,size_t Dimension&gt;
class leaf{

public:
    leaf(size_t _d=Dimension,...);

private:
    size_t _D;

};
</code></pre>
<p>Es soll aber so sein, dass der Benutzer der Templateklasse beim Templateinstanzieren die Dimension mitgeben soll, aber dann beim wirklichen Konstruktoraufruf, lediglich so viele Aurgumente übergeben soll, wie er dann auch als Dimension übergeben hat.<br />
Z.B.:</p>
<pre><code class="language-cpp">/// Benutzen von leaf temp. instanz
leaf&lt; double, 3&gt; _leaf = new leaf(0.0,0.1,0.2);
leaf&lt; double, 1&gt; _leaf = new leaf(0.0);
leaf&lt; double, 4&gt; _leaf = new leaf(0.0,0.0,0.1,0.2);

/// Aber nicht
leaf&lt; double, 2&gt; _leaf = new leaf(2,1.0,0.0);
</code></pre>
<p>P.s.: ich bin mir daüber im klaren, dass es für das Problem andere Lösungen gibt. Die kenne ich aber schon. Ich interessiere mich tatsächlich ausschließlich für die Lösung.... =)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072785</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Fri, 03 Jun 2011 13:03:33 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 14:03:12 GMT]]></title><description><![CDATA[<p>okay, hat sich erledigt... <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/2072818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072818</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Fri, 03 Jun 2011 14:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 14:36:22 GMT]]></title><description><![CDATA[<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p>okay, hat sich erledigt... <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>
</blockquote>
<p>Ich hoffe deshalb, weil du eingesehen hast, dass dies mehr als gefährlich ist !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072836</guid><dc:creator><![CDATA[muggabatscher]]></dc:creator><pubDate>Fri, 03 Jun 2011 14:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 15:02:21 GMT]]></title><description><![CDATA[<p>Hmm also all zu sauber ist das nciht, ...<br />
Das Manko wo ich sehe ist, dass man<br />
Speicherbereiche auslesen kann, die ev. nicht dafür vorgesehen sind.</p>
<p>Aber das kann man als Programmierer eigentlich immer...</p>
<p>Da meine Klasse eine Template Instanz ist, und die Anzahl der Parameter durch einen Template Parameter festgelegt ist , ist die größe des maximal auslesbaren Speicherbereichs jedoch durch den Programmierer eindeutig festegelegt, und kann nicht zur Laufzeit bestimmt werden...</p>
<p>Also ich fände es akzeptabel.<br />
Schlilmm fände ich, wenn der Programm Benutzer die Anzahl der Parameter angeben könnte....</p>
<p>Passt ???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072840</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Fri, 03 Jun 2011 15:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 15:34:23 GMT]]></title><description><![CDATA[<p>Kannst du nicht einfach Template-Spezialisierungen für die wichtigsten Fälle einrichten? Mit C++0x geht das möglicherweise eleganter über Variadic Templates.</p>
<p>Und warum sowas Merkwürdiges wie</p>
<pre><code class="language-cpp">leaf&lt;double, 3&gt; _leaf = new leaf(0.0, 0.1, 0.2);
</code></pre>
<p>statt</p>
<pre><code class="language-cpp">leaf&lt;double, 3&gt; _leaf(0.0, 0.1, 0.2);
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072869</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 03 Jun 2011 15:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 15:34:30 GMT]]></title><description><![CDATA[<p>Du hast auch keinerlei Typkontrolle. Ein</p>
<pre><code class="language-cpp">leaf&lt;double,3&gt;(1.2,3,3.4)
</code></pre>
<p>packt einen <code>int</code> auf den Stack. Und keiner merkt es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072870</guid><dc:creator><![CDATA[muggabatscher]]></dc:creator><pubDate>Fri, 03 Jun 2011 15:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 15:41:03 GMT]]></title><description><![CDATA[<p>@ nexus : das war ein tippfehler...<br />
sollte sein:</p>
<pre><code class="language-cpp">leaf&lt; double, 3&gt; *_leaf = new leaf(0.0,0.1,0.2);
leaf&lt; double, 1&gt; *_leaf = new leaf(0.0);
leaf&lt; double, 4&gt; *_leaf = new leaf(0.0,0.0,0.1,0.2);

/// oder wie du meintest
leaf&lt; double, 3&gt; _leaf(0.0,0.1,0.2);
leaf&lt; double, 1&gt; _leaf(0.0);
leaf&lt; double, 4&gt; _leaf(0.0,0.0,0.1,0.2);
</code></pre>
<p>Das mit der Typ-kontrolle habe ich nicht gesehen.... ja das ist ein Argument...<br />
Das macht es nicht gerade schön...<br />
Werd mir mal die Variadic Templates anschauen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072880</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Fri, 03 Jun 2011 15:41:03 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 15:53:10 GMT]]></title><description><![CDATA[<p>Wie variabel (max. Länge) sollte die Parameterliste denn sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072890</guid><dc:creator><![CDATA[muggabatscher]]></dc:creator><pubDate>Fri, 03 Jun 2011 15:53:10 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 15:57:17 GMT]]></title><description><![CDATA[<p>Hatte mir das schon so vorgestellt, das beim template instanzieren die Länge dann festgelegt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072893</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Fri, 03 Jun 2011 15:57:17 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 16:06:30 GMT]]></title><description><![CDATA[<p>Nochmals: Wieso keine Spezialisierung?</p>
<pre><code class="language-cpp">template &lt;typename T, unsigned int N&gt;
struct Array;

template &lt;typename T&gt;
struct Array&lt;T, 1&gt;
{
	explicit Array(const T&amp; arg1);
};

template &lt;typename T&gt;
struct Array&lt;T, 2&gt;
{
	explicit Array(const T&amp; arg1, const T&amp; arg2);
};
</code></pre>
<p>Die Umsetzung <strong>ist</strong> unschön in C++98, aber du willst es ja unbedingt genau so <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>Die Implementierung kannst du in eine separate Klasse auslagern. Für Codegenerierung könntest du den Präprozessor verwenden, für fortgeschrittene Anwendungen kann dir Boost.Preprocessor behilflich sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072898</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 03 Jun 2011 16:06:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Variable Parameter Liste on Fri, 03 Jun 2011 17:23:01 GMT]]></title><description><![CDATA[<p>Also für jeden Fall ne extra Spezialisierung finde ich nicht so der Hit..</p>
<p>Hoffe ich bekomme das mit den Variadic Templates hin...<br />
Wobei ich da noch nciht so ganz angebkommen bin muss ich sagen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2072925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2072925</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Fri, 03 Jun 2011 17:23:01 GMT</pubDate></item></channel></rss>