<?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[void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;)]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Da sollte ein void-Pointer selten vorkommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ein Void-Pointer sollte in C++ gar nie vorkommen. Hätte das bei Schlüsselwörtern einordnen sollen.<br />
Ich bin geradezu entsetzt, wie viele Funktionen ich mit Nebeneffekten habe.</p>
<p>Ganz zufällig sind die Werte schon nicht, double/float kommt dort nur auf 0.05% (4 Treffer). Bin sicher, dass sich das bei anderen Projekten massiv unterscheidet.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/310379/void-vs-templates-split-aus-quot-prozentuale-verteilung-der-datentypen-quot</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 13:19:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/310379.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Nov 2012 17:24:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 17:24:13 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Da sollte ein void-Pointer selten vorkommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ein Void-Pointer sollte in C++ gar nie vorkommen. Hätte das bei Schlüsselwörtern einordnen sollen.<br />
Ich bin geradezu entsetzt, wie viele Funktionen ich mit Nebeneffekten habe.</p>
<p>Ganz zufällig sind die Werte schon nicht, double/float kommt dort nur auf 0.05% (4 Treffer). Bin sicher, dass sich das bei anderen Projekten massiv unterscheidet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269376</guid><dc:creator><![CDATA[statist]]></dc:creator><pubDate>Fri, 09 Nov 2012 17:24:13 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 17:48:18 GMT]]></title><description><![CDATA[<p>void-Pointer kann man sehr wohl in C++ brauchen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269387</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 09 Nov 2012 17:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 17:56:23 GMT]]></title><description><![CDATA[<blockquote>
<p>void-Pointer kann man sehr wohl in C++ brauchen...</p>
</blockquote>
<p>Zeig mir ein sinnvolles Beispiel für void* (OHNE eine Bibliotheksfunktion zu benutzen, die das fordert), wo man nicht genauso gut mit Templates arbeiten kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269392</guid><dc:creator><![CDATA[Der Tobi]]></dc:creator><pubDate>Fri, 09 Nov 2012 17:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 17:58:47 GMT]]></title><description><![CDATA[<p>Das ist nicht das Thema dieses Threads. Kann das ein Mod splitten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269393</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 09 Nov 2012 17:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 18:02:56 GMT]]></title><description><![CDATA[<p>Der Tobi schrieb:</p>
<blockquote>
<blockquote>
<p>void-Pointer kann man sehr wohl in C++ brauchen...</p>
</blockquote>
<p>Zeig mir ein sinnvolles Beispiel für void* (OHNE eine Bibliotheksfunktion zu benutzen, die das fordert), wo man nicht genauso gut mit Templates arbeiten kann.</p>
</blockquote>
<p>operator new</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269394</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 09 Nov 2012 18:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 21:29:30 GMT]]></title><description><![CDATA[<p>Der Tobi schrieb:</p>
<blockquote>
<blockquote>
<p>void-Pointer kann man sehr wohl in C++ brauchen...</p>
</blockquote>
<p>Zeig mir ein sinnvolles Beispiel für void* (OHNE eine Bibliotheksfunktion zu benutzen, die das fordert), wo man nicht genauso gut mit Templates arbeiten kann.</p>
</blockquote>
<p>void* macht <em>insbesondere</em> zusammen mit templates Sinn: Type Erasure...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269447</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Fri, 09 Nov 2012 21:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 22:55:57 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>void* macht <em>insbesondere</em> zusammen mit templates Sinn: Type Erasure...</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269461</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 09 Nov 2012 22:55:57 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 22:58:45 GMT]]></title><description><![CDATA[<p>Hat mal jemand ein Beispiel wo man fuer Type Erasure einen void* braucht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269462</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 09 Nov 2012 22:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Fri, 09 Nov 2012 23:36:24 GMT]]></title><description><![CDATA[<p>void* brauchts nicht. operator new könnte genauso gut char* zurückgeben, weil er ein Byte-Array allokiert.</p>
<p>Zur Type Erasure ist mir auch noch nichts eingefallen, denn dann müsste man irgendwie mit rohen Pointern herumhantieren.</p>
<p>=&gt; der einzige Zweck von void* ist eine saubere Definition von reinterpret_cast&lt;&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269465</guid><dc:creator><![CDATA[a void able]]></dc:creator><pubDate>Fri, 09 Nov 2012 23:36:24 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 19:45:48 GMT]]></title><description><![CDATA[<p>a void able schrieb:</p>
<blockquote>
<p>operator new könnte genauso gut char* zurückgeben, weil er ein Byte-Array allokiert.</p>
</blockquote>
<p>In einem anderen Thread habe ich letztens erst gezeigt, dass <code>char</code> nicht einen Byte groß sein muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269657</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 10 Nov 2012 19:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 19:46:46 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>a void able schrieb:</p>
<blockquote>
<p>operator new könnte genauso gut char* zurückgeben, weil er ein Byte-Array allokiert.</p>
</blockquote>
<p>In einem anderen Thread habe ich letztens erst gezeigt, dass <code>char</code> nicht einen Byte groß sein muss.</p>
</blockquote>
<p>war das nicht ie Definition von char? Link?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269658</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 10 Nov 2012 19:46:46 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 20:07:31 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>In einem anderen Thread habe ich letztens erst gezeigt, dass <code>char</code> nicht einen Byte groß sein muss.</p>
</blockquote>
<p>Ach, einfach herrlich hier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269665</guid><dc:creator><![CDATA[sonate]]></dc:creator><pubDate>Sat, 10 Nov 2012 20:07:31 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 20:39:45 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28547">@Sone</a></p>
<p>§5.3.3 / 1 schrieb:</p>
<blockquote>
<p>sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1</p>
</blockquote>
<p>Aber meines Wissens muss 1 byte nicht 8 bit gross sein ... oder? Aber dann gibts ja noch <code>uint8_t</code> / <code>int8_t</code> ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269672</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Sat, 10 Nov 2012 20:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 20:46:23 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>a void able schrieb:</p>
<blockquote>
<p>operator new könnte genauso gut char* zurückgeben, weil er ein Byte-Array allokiert.</p>
</blockquote>
<p>In einem anderen Thread habe ich letztens erst gezeigt, dass <code>char</code> nicht einen Byte groß sein muss.</p>
</blockquote>
<p>war das nicht ie Definition von char? Link?</p>
</blockquote>
<p>Eric Cartman schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28547">@Sone</a></p>
<p>§5.3.3 / 1 schrieb:</p>
<blockquote>
<p>sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1</p>
</blockquote>
<p>Aber meines Wissens muss 1 byte nicht 8 bit gross sein ... oder? Aber dann gibts ja noch <code>uint8_t</code> / <code>int8_t</code> ...</p>
</blockquote>
<p>Ziehe es zurück, da ging es tatsächlich um die Bitzahl, ein char hat also mindestens 8 Bit, dachte, die Bitzahl des Bytes wäre vom Standard definiert... (<a href="http://www.c-plusplus.net/forum/p2268557#2268557" rel="nofollow">Link</a>)<br />
Ja, <code>char*</code> könnte tatsächlich von den <code>operator new/delete</code> benutzt werden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269673</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 10 Nov 2012 20:46:23 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 21:08:32 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Ja, <code>char*</code> könnte tatsächlich von den <code>operator new/delete</code> benutzt werden...</p>
</blockquote>
<p>Also bist du auch der Meinung, dass void* nicht nötig ist?</p>
<p>Ich ziehe sogar meine Aussage zurück, dass void* für die Definition reinterpret_cast gebraucht wird. Das wird nur benötigt, um Blödsinn mit void* und static-casts zu vermeiden.</p>
<p>void* kann immer durch reinterpret_cast und char* ersetzt werden und ich würde meinen, das ist immer besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269677</guid><dc:creator><![CDATA[a void able]]></dc:creator><pubDate>Sat, 10 Nov 2012 21:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 21:21:40 GMT]]></title><description><![CDATA[<p>a void able schrieb:</p>
<blockquote>
<p>void* kann immer durch reinterpret_cast und char* ersetzt werden und ich würde meinen, das ist immer besser.</p>
</blockquote>
<p>Hast du dafür auch irgendeine rationale Begründung?</p>
<p>Imo sind void* und char* doch sehr verschiedener Natur. Ein char* flüstert einem z.B. ständig ins Ohr: &quot;Mach Zeigerarithmetik mit mir&quot;, ein void* schweigt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269680</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 10 Nov 2012 21:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 21:22:05 GMT]]></title><description><![CDATA[<p>a void able schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Ja, <code>char*</code> könnte tatsächlich von den <code>operator new/delete</code> benutzt werden...</p>
</blockquote>
<p>Also bist du auch der Meinung, dass void* nicht nötig ist?</p>
</blockquote>
<p>Ich bin unentschieden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269682</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 10 Nov 2012 21:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 21:31:03 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Hast du dafür auch irgendeine rationale Begründung?</p>
</blockquote>
<p>char* sagt dir, &quot;ich bin ein Zeiger auf Rohspeicher&quot; und hat irgendeine Länge.</p>
<p>void* schweigt, egal wie viel du über ihn herausfinden willst. Aber genau das muss irgendwann getan werden, sonst nützt er einem nichts. Entweder ist void* ein Zeiger auf einen Typ, dann sollen Templates benutzt werden, oder void* ist ein Zeiger auf Rohspeicher (Beispiel new/delete), dann soll char* benutzt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269685</guid><dc:creator><![CDATA[a void able]]></dc:creator><pubDate>Sat, 10 Nov 2012 21:31:03 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 21:45:54 GMT]]></title><description><![CDATA[<p>a void able schrieb:</p>
<blockquote>
<p>void* schweigt, egal wie viel du über ihn herausfinden willst.</p>
</blockquote>
<p>Und wenn ich genau das will? Wieso genau wäre ein char* z.B. im Kontext mit Type Erasure deiner Meinung nach besser als void*?</p>
<p>Dass operator new void* returned ist wohl historisch bedingt. Dass char* dort sinnvoller wäre, seh ich auch so. Ich würde sogar einen Schritt weiter gehen und meinen, dass das ganze Konzept von new eigentlich flawed ist und die Allokation von Speicher rein Aufgabe einer Library sein sollte. Die Sprache sollte lediglich die Möglichkeit bieten, Objekte in einem gegebenen Speicherbereich zu konstruieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269686</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 10 Nov 2012 21:45:54 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 21:43:59 GMT]]></title><description><![CDATA[<p>Zum Template-Bloat mit void* ist mir ein Beispiel eingefallen. Man hat einen Baum und verschiedene Algorithmen darauf (Liste in DFS-Reihenfolge generieren, Liste in BFS-Reihenfolge generieren). Dann könnten die Daten als void* gespeichert werden, weil sie nicht interessieren.</p>
<p>Aber dann existiert eine noch opakere Lösung:</p>
<pre><code class="language-cpp">template &lt;typename Data&gt;
struct node {
  node *left, *right;
  /* some internal datas */

  Data d;
};

typedef node&lt;std::aligned_storage&lt;sizeof(char*), std::alignment_of&lt;char*&gt;::value&gt; generic_node
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2269689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269689</guid><dc:creator><![CDATA[a void able]]></dc:creator><pubDate>Sat, 10 Nov 2012 21:43:59 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Sat, 10 Nov 2012 21:49:57 GMT]]></title><description><![CDATA[<p>Das typedef habe ich etwas verhauen:</p>
<pre><code class="language-cpp">typedef node&lt;std::aligned_storage&lt;sizeof(char*), std::alignment_of&lt;char*&gt;::value&gt;::type&gt; generic_node
</code></pre>
<p>Aber ich denke, besser wäre ein zentraler generic_pointer:</p>
<pre><code class="language-cpp">// das gleiche wie ein void*, nur dass es nicht einfach zu etwas anderem gecastet werden kann.
typedef std::aligned_storage&lt;sizeof(char*), std::alignment_of&lt;char*&gt;::value&gt;::type generic_pointer;

// unserer generischer knoten:
typedef node&lt;generic_pointer&gt; generic_node;

// node lässt sich ganz einfach auch typsicher machen.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2269691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269691</guid><dc:creator><![CDATA[a void able]]></dc:creator><pubDate>Sat, 10 Nov 2012 21:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Mon, 12 Nov 2012 09:42:26 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>a void able schrieb:</p>
<blockquote>
<p>void* schweigt, egal wie viel du über ihn herausfinden willst.</p>
</blockquote>
<p>Und wenn ich genau das will? Wieso genau wäre ein char* z.B. im Kontext mit Type Erasure deiner Meinung nach besser als void*?</p>
</blockquote>
<p>Hast du denn ein Beispiel wo man void* oder char* braucht?</p>
<p>Ich denke nämlich, dass es nicht notwendig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270045</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 12 Nov 2012 09:42:26 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Mon, 12 Nov 2012 13:57:12 GMT]]></title><description><![CDATA[<p>Der Tobi schrieb:</p>
<blockquote>
<blockquote>
<p>void-Pointer kann man sehr wohl in C++ brauchen...</p>
</blockquote>
<p>Zeig mir ein sinnvolles Beispiel für void* (OHNE eine Bibliotheksfunktion zu benutzen, die das fordert), wo man nicht genauso gut mit Templates arbeiten kann.</p>
</blockquote>
<p>Aehm was ist denn das fuer ein Quatsch? Was wenn ich Bibliotheken in C++ schreibe, die in C verwendet werden? Fuer die ganze Interoperabilitaet, abstrakte Datentypen, ... ist void* noetig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270108</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 12 Nov 2012 13:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Mon, 12 Nov 2012 14:32:43 GMT]]></title><description><![CDATA[<p>Die Begruendung, man koennte doch statt void* ueberall char* verwenden, ist hirnrissig. Letztendlich ist alles ein haufen Bytes, warum also ueberhaupt Typen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270121</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Mon, 12 Nov 2012 14:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Mon, 12 Nov 2012 14:46:29 GMT]]></title><description><![CDATA[<blockquote>
<p>Aber meines Wissens muss 1 byte nicht 8 bit gross sein ... oder? Aber dann gibts ja noch uint8_t / int8_t ...</p>
</blockquote>
<p>Welchen Sinn macht ein Byte, welches nicht exakt 8 Bit groß ist ??? <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>
<blockquote>
<p>Hast du denn ein Beispiel wo man void* oder char* braucht?</p>
<p>Ich denke nämlich, dass es nicht notwendig ist.</p>
</blockquote>
<p>Ich habe mal einen generischen Container für mehrere Typen geschrieben. Dabei hatte ich den Programmablauf mit Hilfe einer XML Datei gesteuert. Also etwas in der Form:</p>
<pre><code>// Kein Anspruch auf Vollständigkeit!
class Node  // Klasse zur Speicherung von verschiedenen Datentypen
{
private: 
  void* Data;
  std::string Type;

public:
  void Set(const XMLElementA&amp; V)
  {
     this-&gt;Data = new XMLElementA(V);
     this-&gt;Type = &quot;XMLElementA&quot;;
  }

  void Set(const XMLElementB&amp; V)
  {
     this-&gt;Data = new XMLElementB(V);
     this-&gt;Type = &quot;XMLElementB&quot;;
  }

  void Set(const XMLElementC&amp; V)
  {
     this-&gt;Data = new XMLElementC(V);
     this-&gt;Type = &quot;XMLElementC&quot;;
  }

  // ...
};

// ...

std::list&lt;Node&gt; XMLFileContent;
</code></pre>
<p>Gibt es da eine andere, elegantere Möglichkeit ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270125</guid><dc:creator><![CDATA[Bitte ein Bit]]></dc:creator><pubDate>Mon, 12 Nov 2012 14:46:29 GMT</pubDate></item><item><title><![CDATA[Reply to void* vs Templates (Split aus &amp;quot;Prozentuale Verteilung der Datentypen&amp;quot;) on Mon, 12 Nov 2012 15:21:42 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Die Begruendung, man koennte doch statt void* ueberall char* verwenden, ist hirnrissig. Letztendlich ist alles ein haufen Bytes, warum also ueberhaupt Typen...</p>
</blockquote>
<p>Das war nie mein Argument. Ich habe gesagt, dass man <code>void*</code> fast immer durch Templates ersetzen kann (und das dann besserer Code ist).<br />
In den wenigen Fällen wo das nicht geht, will man meistens einen <code>char*</code> (Beispiel operator new/delete) oder, wenn es um Template-Bloat geht, einen <code>std::aligned_storage&lt;char*&gt;</code> .</p>
<p>@Bitte ein Bit: Etwas mehr Kontext wäre nicht schlecht. Bei dir sieht es aus, als wären entweder die verschiedenen Klassen unnötig (einfach zwei strings speichern) oder du brauchst eine gemeinsame Basisklasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2270139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2270139</guid><dc:creator><![CDATA[a void able]]></dc:creator><pubDate>Mon, 12 Nov 2012 15:21:42 GMT</pubDate></item></channel></rss>