<?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*]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann mir bitte jemand ein anschauliches Beispiel geben, wo void* (Zeiger auf void) wirklich Sinn macht und dieses evtl. kurz erläutern? Danke im Voraus! <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="🙂"
    /> <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="🙂"
    /> <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/topic/193855/void</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 07:28:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193855.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Oct 2007 00:15:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 00:15:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann mir bitte jemand ein anschauliches Beispiel geben, wo void* (Zeiger auf void) wirklich Sinn macht und dieses evtl. kurz erläutern? Danke im Voraus! <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="🙂"
    /> <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="🙂"
    /> <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/1375628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375628</guid><dc:creator><![CDATA[notebook]]></dc:creator><pubDate>Mon, 01 Oct 2007 00:15:06 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 00:25:28 GMT]]></title><description><![CDATA[<p>Die machen in C++ eigentlich gar keinen Sinn mehr, da man Templates hat. In C werden sie verwendet um Zeiger auf unbestimmte Daten zu halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375629</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Mon, 01 Oct 2007 00:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 00:28:41 GMT]]></title><description><![CDATA[<p>Und würde es in C++ keine Templates geben... ...wofür würde void* denn dann eingesetzt werden? (suche konkreten Anwendungsfall) Danke im Voraus und gute Nacht. <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/1375630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375630</guid><dc:creator><![CDATA[notebook]]></dc:creator><pubDate>Mon, 01 Oct 2007 00:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 04:03:08 GMT]]></title><description><![CDATA[<p>mir fällt im moment nur die Verwendung bei createThread ein!!</p>
<p>bei der Thread Funktion, welche als einstiegstpunkt der Paralellprozesses verwendet wird, hat eine void* Parameter, weil im vornerein ja nicht gegeben ist welcher Datentyp der Thread Funktion übergeben wird!</p>
<pre><code class="language-cpp">DATENTYP X;

 //hier wird von X auf void* gecastet
CreateThread (0,ThreadFunc,(void*)&amp;X,CREATE_SUSPENDED,&amp;_tid);			
//Thread Funktion
static DWORD ThreadFunc(void* pData){

  DATENTYP X= (X) *pData;  //Hier wird von void* auf X gecastet

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1375633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375633</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 01 Oct 2007 04:03:08 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 07:46:26 GMT]]></title><description><![CDATA[<p>rüdiger schrieb:</p>
<blockquote>
<p>Die machen in C++ eigentlich gar keinen Sinn mehr, da man Templates hat. In C werden sie verwendet um Zeiger auf unbestimmte Daten zu halten.</p>
</blockquote>
<p>In C++ ebenso, weil es Wahnsinn wäre jede Codestelle unnötig durch Templates zigfach duplizieren zu lassen bloss weil sie sonst void* rumreichen müsste.<br />
Ein bisschen Realismus bitte <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/1375712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375712</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 01 Oct 2007 07:46:26 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 07:47:51 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Desweiteren macht void* noch Sinn für GUI-Controls mit Items zu denen jeweils noch Identifizierungsdaten mitverwaltet werden sollen. Beispiel : ListBox mit Städten die jeweils mit einer PLZ verknüft sein sollen, andereseits soll die Listbox die Städte automatisch sortieren. Dann kann man den Index/Zeiger/Wert... der PLZ als void* immer an das Item hängen.<br />
Es gibt auch ListBox-Implementationen wo (zusätzlich) eine Basisklasse als Datenobjekt möglich ist, so das auch gleich der Speicher der Daten-Klassen von der ListBox verwaltet werden kann, zum Beispiel wxListBox. Hat natürlich den Nachteil das man wirklich immer ableiten muß.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375715</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 01 Oct 2007 07:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 09:38:04 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>rüdiger schrieb:</p>
<blockquote>
<p>Die machen in C++ eigentlich gar keinen Sinn mehr, da man Templates hat. In C werden sie verwendet um Zeiger auf unbestimmte Daten zu halten.</p>
</blockquote>
<p>In C++ ebenso, weil es Wahnsinn wäre jede Codestelle unnötig durch Templates zigfach duplizieren zu lassen bloss weil sie sonst void* rumreichen müsste.<br />
Ein bisschen Realismus bitte <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>
</blockquote>
<p>Hm. entweder du arbeitest in deinem speziellen Fall nur mit einem Datentyp, dann wird vom Template nur eine Intantiierung gemacht. Oder du hast verschiedene Datentypen, dann muesstest du bei der void* version aber mit irgendwelchen obszoenen if-elses oder switches arbeiten, was dan im Endeffekt nicht weniger Code ausmacht als die Mehrfachinstantiierung eines Templates - nur dass du den ganzen Code selbst tippen musst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375810</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 01 Oct 2007 09:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 09:42:57 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a><br />
okay, da hast du recht. Dann aber lieber in Form von boost::any :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375814</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Mon, 01 Oct 2007 09:42:57 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 11:15:49 GMT]]></title><description><![CDATA[<p>notebook schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>kann mir bitte jemand ein anschauliches Beispiel geben, wo void* (Zeiger auf void) wirklich Sinn macht und dieses evtl. kurz erläutern? Danke im Voraus! <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="🙂"
    /> <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="🙂"
    /> <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>void* ist da sinnvoll, wo du zeiger auf &quot;irgendwas&quot; speichern willst. du legst damit nur eine adresse zu einem speicherbereich ab; die information in welchem format die daten vorliegen, geht dabei verloren.</p>
<p>das wird meistens benutzt, um nicht näher spezifizierte daten an objekte zu hängen.</p>
<pre><code class="language-cpp">class foo
{
    public :
        void set_userdata(void *data) { userdata = data; }
        void* get_userdata() { return userdata; }
    private :
       void *userdata;
};

int i = 12;

Foo bar;
bar.set_userdata(&amp;i); // bar speichert zeiger auf i
int j = *((int*)bar.get_userdata());  // j == i
bar.set_userdata(&amp;bar); // bar speichert zeiger auf sich selbst
Foo *narf = (Foo*)bar.get_userdata(); // narf == bar
</code></pre>
<p>nachteil ist, du musst den void-pointer immer von hand in den ursprünglichen typ casten. das ist sehr fehleranfällig. deshalb sollte man solche konstrukte in c++ vermeiden, wo templates bessere (typsichere) möglichkeiten bieten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375874</guid><dc:creator><![CDATA[cpt. obvious]]></dc:creator><pubDate>Mon, 01 Oct 2007 11:15:49 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 14:03:57 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>rüdiger schrieb:</p>
<blockquote>
<p>Die machen in C++ eigentlich gar keinen Sinn mehr, da man Templates hat. In C werden sie verwendet um Zeiger auf unbestimmte Daten zu halten.</p>
</blockquote>
<p>In C++ ebenso, weil es Wahnsinn wäre jede Codestelle unnötig durch Templates zigfach duplizieren zu lassen bloss weil sie sonst void* rumreichen müsste.<br />
Ein bisschen Realismus bitte <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>
</blockquote>
<p>Hm. entweder du arbeitest in deinem speziellen Fall nur mit einem Datentyp, dann wird vom Template nur eine Intantiierung gemacht. Oder du hast verschiedene Datentypen, dann muesstest du bei der void* version aber mit irgendwelchen obszoenen if-elses oder switches arbeiten, was dan im Endeffekt nicht weniger Code ausmacht als die Mehrfachinstantiierung eines Templates - nur dass du den ganzen Code selbst tippen musst...</p>
</blockquote>
<p>Neh, du verstehst nicht worum es mir geht.<br />
Es geht um Programmstellen die bloss einen &quot;Zeiger auf irgendwas&quot; (vergleiche &quot;dwUserdata&quot; falls du jemals Windows programmiert hast) rumreichen müssen. Diese Stellen müssen garnix wissen, und den Cast kann man meist auch in einem sehr schlanken Template verstecken so dass der User ihn nicht schreiben muss. Das ist dann 1 Template wo ansonsten hunderte wären. Darum gehts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376004</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 01 Oct 2007 14:03:57 GMT</pubDate></item><item><title><![CDATA[Reply to void* on Mon, 01 Oct 2007 14:07:03 GMT]]></title><description><![CDATA[<p>rüdiger schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a><br />
okay, da hast du recht. Dann aber lieber in Form von boost::any :p</p>
</blockquote>
<p>Bäh. Pfui. Spuck. Würg.<br />
Wenn ich langsame programme will dann schreibe ich Python...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376010</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 01 Oct 2007 14:07:03 GMT</pubDate></item></channel></rss>