<?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[unbekannte argumente benutzen]]></title><description><![CDATA[<p>heiho</p>
<p>es gibt ja in cpp die moeglichkeit &quot;...&quot; zu benutzen zb</p>
<pre><code class="language-cpp">int ret = sprintf_s(Val, iReserved, rhs.c_str(), ...);
</code></pre>
<p>aaaaber<br />
ich hab hier eine template funktion in welcher ich diese argumente verwenden will</p>
<pre><code class="language-cpp">template&lt;class T&gt;
void foo&lt;T&gt;::bar(std::string rhs, ...)
{
    .
    .
    .
    int ret = sprintf_s(Val, iReserved, rhs.c_str(), ...);
    .
    .
    .
}
</code></pre>
<p>compiliert auch problemlos, aber sobald ich es benutzen will:</p>
<pre><code class="language-cpp">dings.bar(&quot;abba %d&quot;, 15);
</code></pre>
<p>kommt der fehler:</p>
<pre><code>error C2059: syntax error : '...'
</code></pre>
<p>bjarne schrieb das die ... einfach eine unbekannte anzahl parameter ist welche keine typpruefung ermoeglichen</p>
<p>aber wie kann ich diese selber benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182074/unbekannte-argumente-benutzen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 11:25:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182074.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 May 2007 09:21:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to unbekannte argumente benutzen on Mon, 21 May 2007 09:21:21 GMT]]></title><description><![CDATA[<p>heiho</p>
<p>es gibt ja in cpp die moeglichkeit &quot;...&quot; zu benutzen zb</p>
<pre><code class="language-cpp">int ret = sprintf_s(Val, iReserved, rhs.c_str(), ...);
</code></pre>
<p>aaaaber<br />
ich hab hier eine template funktion in welcher ich diese argumente verwenden will</p>
<pre><code class="language-cpp">template&lt;class T&gt;
void foo&lt;T&gt;::bar(std::string rhs, ...)
{
    .
    .
    .
    int ret = sprintf_s(Val, iReserved, rhs.c_str(), ...);
    .
    .
    .
}
</code></pre>
<p>compiliert auch problemlos, aber sobald ich es benutzen will:</p>
<pre><code class="language-cpp">dings.bar(&quot;abba %d&quot;, 15);
</code></pre>
<p>kommt der fehler:</p>
<pre><code>error C2059: syntax error : '...'
</code></pre>
<p>bjarne schrieb das die ... einfach eine unbekannte anzahl parameter ist welche keine typpruefung ermoeglichen</p>
<p>aber wie kann ich diese selber benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288906</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Mon, 21 May 2007 09:21:21 GMT</pubDate></item><item><title><![CDATA[Reply to unbekannte argumente benutzen on Mon, 21 May 2007 09:27:52 GMT]]></title><description><![CDATA[<p>Um variable Argumente verarbeiten zu können, gibt es den Typ 'va_list' und die Makros/Funktionen 'va_start()', 'va_arg()' und 'va_end()'. (wieviele und was für Parameter du bekommst, mußt du allerdings selber wissen)</p>
<p>Für dich hilfreich ist sicher noch vsprintf() - das nimmt anstelle von beliebig vielen Argumenten einen va_list, den du vorbereitet haben mußt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288909</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 21 May 2007 09:27:52 GMT</pubDate></item><item><title><![CDATA[Reply to unbekannte argumente benutzen on Mon, 21 May 2007 09:29:00 GMT]]></title><description><![CDATA[<p>In diesem Fall: garnicht.</p>
<p>Es gibt aber die Möglichkeit einer Funktion ein Handle (va_list) auf die unbestimmte Argumentliste zu übergeben. Zu Deiner Funktion sprintf_s gibt es dazu das Pendant vsprintf_s, welches statt der unbestimmten Argumentliste eben jenes Handle auf eben jene Liste erwartet. Damit kannst Du Deine Funktion realisieren:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
void foo&lt;T&gt;::bar(std::string rhs, ...)
{
    .
    .
    .
    va_list ap;
    va_start(ap, rhs);
    int ret = vsprintf_s(Val, iReserved, rhs.c_str(), ap);
    va_end(ap);
    .
    .
    .
}
</code></pre>
<p>Generell würde ich aber empfehlen, &quot;...&quot; garnicht mehr zu benutzen, da es nicht nur die Typunsicherheit aus C-Zeiten erbt, sondern zusätzlich die Anzahl der Argumente nicht ermittelt werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288912</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 21 May 2007 09:29:00 GMT</pubDate></item><item><title><![CDATA[Reply to unbekannte argumente benutzen on Mon, 21 May 2007 09:40:09 GMT]]></title><description><![CDATA[<p>aaaaaaah - vielen dank dafuer, ich hatte noch sowas im hinterkopf - danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288926</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Mon, 21 May 2007 09:40:09 GMT</pubDate></item></channel></rss>