<?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[umwandlung void*]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich probiere gerade für eine templateklasse eine allgemeine methode zu definieren die dann über ein array mit parametern gefüttert wird.</p>
<p>Ich habe ein template mit unterschiedlichen datentypen welches von einer basisklasse erbt. Ich möchte dann mithilfe dieser basiklasse eine art wrappermethode auf das template schreiben, die ein abstraktes array von typen nimmt um die eigentlichen templatemethoden (mit den zu diesem zeitpunkt nur dem template bekannten parametern) aufzurufen und dazu die parameter aus dem array zu übernehmen.</p>
<p>die frage ist ob sowas funktioniert</p>
<pre><code>//not compiled/ not tested

myfunc(void** args)
{
   myinnerfunc
   (
      (int)args[0],
      (std::string)args[1],
      (float)agrs[2]
   );
}

template&lt;typename t1, typename t2, ...&gt;(t1,t2,...)
..

main()
{
   void** data = new void*[3];
   data[0] = 20;
   data[1] = &amp;std::string(&quot;x&quot;);
   data[3] = 0.1f;

   mytype&lt;int,std::string,float&gt;::myfunc(data);
}
</code></pre>
<p>oder inwieweit ich das abändern muss, dass das klappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320183/umwandlung-void</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 12:07:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320183.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Sep 2013 15:32:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to umwandlung void* on Thu, 19 Sep 2013 15:32:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich probiere gerade für eine templateklasse eine allgemeine methode zu definieren die dann über ein array mit parametern gefüttert wird.</p>
<p>Ich habe ein template mit unterschiedlichen datentypen welches von einer basisklasse erbt. Ich möchte dann mithilfe dieser basiklasse eine art wrappermethode auf das template schreiben, die ein abstraktes array von typen nimmt um die eigentlichen templatemethoden (mit den zu diesem zeitpunkt nur dem template bekannten parametern) aufzurufen und dazu die parameter aus dem array zu übernehmen.</p>
<p>die frage ist ob sowas funktioniert</p>
<pre><code>//not compiled/ not tested

myfunc(void** args)
{
   myinnerfunc
   (
      (int)args[0],
      (std::string)args[1],
      (float)agrs[2]
   );
}

template&lt;typename t1, typename t2, ...&gt;(t1,t2,...)
..

main()
{
   void** data = new void*[3];
   data[0] = 20;
   data[1] = &amp;std::string(&quot;x&quot;);
   data[3] = 0.1f;

   mytype&lt;int,std::string,float&gt;::myfunc(data);
}
</code></pre>
<p>oder inwieweit ich das abändern muss, dass das klappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353788</guid><dc:creator><![CDATA[Pria]]></dc:creator><pubDate>Thu, 19 Sep 2013 15:32:03 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Thu, 19 Sep 2013 15:36:10 GMT]]></title><description><![CDATA[<p>Master fail.</p>
<p>1.) Es gibt gute Gruende, die gegen deinen Bedarf einer solchen Funktion sprechen.<br />
2.) Welches Problem soll geloest warden?<br />
3.) std::function</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353792</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 19 Sep 2013 15:36:10 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Thu, 19 Sep 2013 15:58:33 GMT]]></title><description><![CDATA[<blockquote>
<p>void** data = new void*[3];</p>
</blockquote>
<p>wat</p>
<p>Egal was du bauen möchtest: void* ist in der Regel (und bei C++11 noch viel mehr) ein Zeichen für kaputtes Design. Gerade variadic templates sollten den Bedarf für Sachen wie void** praktisch komplett eliminieren. Wenn es unbedingt sein muss mit der &quot;allgemeinen Methode&quot;, dann schau dir boost::any an und stopf dort parametrisierte std::functions rein. Danach baust du dir eine variadic template function invoke wo du dann intern einen Cast machst von boost::any zu eben der function mit der gleichen Signatur und rvalue references für die Übergabe der Parameter.</p>
<p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>e</mi><mi>d</mi><mi>i</mi><mi>t</mi></mrow><annotation encoding="application/x-tex">edit</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.69444em;"></span><span class="strut bottom" style="height:0.69444em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">e</span><span class="mord mathit">d</span><span class="mord mathit">i</span><span class="mord mathit">t</span></span></span></span>: Mein Post liest sich, als ob ich zu viel auf den Kopf gefallen wär <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353804</guid><dc:creator><![CDATA[*rant*]]></dc:creator><pubDate>Thu, 19 Sep 2013 15:58:33 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Thu, 19 Sep 2013 16:15:53 GMT]]></title><description><![CDATA[<p>/rant/ schrieb:</p>
<blockquote>
<p><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>e</mi><mi>d</mi><mi>i</mi><mi>t</mi></mrow><annotation encoding="application/x-tex">edit</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.69444em;"></span><span class="strut bottom" style="height:0.69444em;vertical-align:0em;"></span><span class="base textstyle uncramped"><span class="mord mathit">e</span><span class="mord mathit">d</span><span class="mord mathit">i</span><span class="mord mathit">t</span></span></span></span>: Mein Post liest sich, als ob ich zu viel auf den Kopf gefallen wär <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Den letzten Satz solltest du noch einmal überarbeiten.</p>
<pre><code>&amp;std::string(&quot;x&quot;)
</code></pre>
<p>Ganz falsch. Die Adresse einer Temporary zu nehmen, ist gar nicht schlau. Nur weil VC++ das erlaubt, heißt das nicht, dass das an sich viel Sinn macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353811</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 19 Sep 2013 16:15:53 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Thu, 19 Sep 2013 17:07:16 GMT]]></title><description><![CDATA[<p>blurry333 == Pria ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353840</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 19 Sep 2013 17:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Fri, 20 Sep 2013 10:12:28 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>1.) Es gibt gute Gruende, die gegen deinen Bedarf einer solchen Funktion sprechen.</p>
</blockquote>
<p>1. anscheinend nicht sonst hätte ich die Frage ja nicht gestellt</p>
<p>knivil schrieb:</p>
<blockquote>
<p>3.) std::function</p>
</blockquote>
<p>2. <s>C++ 11</s></p>
<p>knivil schrieb:</p>
<blockquote>
<p>blurry333 == Pria ?</p>
</blockquote>
<p>3. mit sicherheit nicht</p>
<blockquote>
<p>boost::any</p>
</blockquote>
<p>4. ich benutze kein boost, es gibt <strong>immer</strong> einen weg das selber zu lösen</p>
<blockquote>
<p>variadic templates sollten den Bedarf für Sachen wie void** praktisch komplett eliminieren</p>
</blockquote>
<p>5. statisch, daher schlicht unbrauchbar!</p>
<p>so und wie so oft nochmal so dass es auch jeder versteht</p>
<pre><code>class mybasictemp
{
   public:
     virtual void invoke(??* args);
};

template&lt;typename t1, typename t2 ... typename n&gt; //variable 1-n
class mytemp : mybasictemp
{
   public:
      void invoke(t1, t2 ... n);
      virtual void invoke(??* args) override;
};
</code></pre>
<pre><code>main()
{
   std::map&lt;std::string, mybasictemp&gt; temps = std::map&lt;std::string, mybasictemp&gt;();
   temps[&quot;test(1)&quot;] = mytemp&lt;int&gt;();
   temps[&quot;test(3)&quot;] = mytemp&lt;int, std::string, float&gt;();

   ??* args //&lt;- from a source that dosent matter in this example eg.
            //   a cmd, network or file stream as strings (converted to the types needed)

   std::string name //&lt;- a name to the template to be called
   temps[name].invoke(args); //&lt;- exception if array is too short
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2353974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353974</guid><dc:creator><![CDATA[Pria]]></dc:creator><pubDate>Fri, 20 Sep 2013 10:12:28 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Fri, 20 Sep 2013 10:51:10 GMT]]></title><description><![CDATA[<p>Das ist doch nicht mal gueltiges C++!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353990</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 20 Sep 2013 10:51:10 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Fri, 20 Sep 2013 11:00:21 GMT]]></title><description><![CDATA[<p>Pria schrieb:</p>
<blockquote>
<pre><code>void** data = new void*[3];
</code></pre>
</blockquote>
<p>Also allein schon diese Zeile zeigt, dass du dein Konzept nochmal grundlegend durchdenken solltest. Void* als Zwischenweg kann ich sogar noch akzeptieren, aber wenn jemand anfängt, void-Pointer aktiv zu allokieren läuft etwas total falsch.</p>
<p>Vielleicht solltest du mal erzählen, was der Hintergrund deines C++-Amoklaufs ist, damit man dir alternative Lösungen anbieten kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353996</guid><dc:creator><![CDATA[It0101]]></dc:creator><pubDate>Fri, 20 Sep 2013 11:00:21 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Fri, 20 Sep 2013 11:17:10 GMT]]></title><description><![CDATA[<p>Pria schrieb:</p>
<blockquote>
<blockquote>
<p>boost::any</p>
</blockquote>
<p>4. ich benutze kein boost, es gibt <strong>immer</strong> einen weg das selber zu lösen</p>
</blockquote>
<p>Man mag alles selbst lösen können, dies ist in der Regel aber weder aus wirtschaftlichen noch qualitativen Gründen sinnvoll. Zum einen braucht die eigene Implementation (&quot;Das Rad neu erfinden&quot;) mehr Zeit, zum anderen kann man seinen eigenen Code selten so gut durch testen, wie ein großes Team dies kann.</p>
<p>Ich habe vielen schlechten Code gesehen der, der Tatsache geschuldet war, das einer meinte alles selbst bauen zu müssen. Dann auch noch meinte das sein Code schneller und sicherer als der Kram aus der C++ Standardbibliothek sei (z.B. ein Vektorersatz der furchtbar kompliziert aus Mehrfachzeigern zusammen gebaut war).</p>
<p>Selbst bauen ist nur dann sinnvoll, wenn man entweder es einmal richtig verstehen will (danach bitte wegschmeißen) oder wirklich einen Sonderfall hat in dem es eine bessere Lösung gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354001</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 20 Sep 2013 11:17:10 GMT</pubDate></item><item><title><![CDATA[Reply to umwandlung void* on Fri, 20 Sep 2013 13:11:39 GMT]]></title><description><![CDATA[<p>Soetwas?</p>
<p><a href="http://ideone.com/GWAjvS" rel="nofollow">http://ideone.com/GWAjvS</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354071</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Fri, 20 Sep 2013 13:11:39 GMT</pubDate></item></channel></rss>