<?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[float zu void* casten?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich stehe gerade vor einem nervigen Problem, dass ich selbst leider nicht in den Griff bekomme.</p>
<p>Ich habe eine Klasse, die in der Lage sein soll, unterschiedliche Datentypen zu lagern. Sicher ginge das nun auch über Klassen-Templates, aber ich präferiere in dem Falle aufgrund einiger Besonderheiten eine andere Vorgehensweise. Und nun zu meiner eigentlichen Frage:</p>
<p>Wahrscheinlich recht einfach, aber wie kann ich einen void*-Pointer mit einem float-Wert füllen?</p>
<p>Ich hab's schon auf so ziemlich jede (mir) erdenkliche Art und Weise versucht:</p>
<p>malloc()/memcpy()<br />
static_cast<br />
oder auch mit einem new Operator</p>
<p>Aber leider kein Erfolg.</p>
<p>Ich komm nicht so recht weiter, also bin ich für jede Hilfe dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208155/float-zu-void-casten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 12:39:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208155.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Mar 2008 13:56:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to float zu void* casten? on Sat, 15 Mar 2008 13:56:39 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich stehe gerade vor einem nervigen Problem, dass ich selbst leider nicht in den Griff bekomme.</p>
<p>Ich habe eine Klasse, die in der Lage sein soll, unterschiedliche Datentypen zu lagern. Sicher ginge das nun auch über Klassen-Templates, aber ich präferiere in dem Falle aufgrund einiger Besonderheiten eine andere Vorgehensweise. Und nun zu meiner eigentlichen Frage:</p>
<p>Wahrscheinlich recht einfach, aber wie kann ich einen void*-Pointer mit einem float-Wert füllen?</p>
<p>Ich hab's schon auf so ziemlich jede (mir) erdenkliche Art und Weise versucht:</p>
<p>malloc()/memcpy()<br />
static_cast<br />
oder auch mit einem new Operator</p>
<p>Aber leider kein Erfolg.</p>
<p>Ich komm nicht so recht weiter, also bin ich für jede Hilfe dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1474804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474804</guid><dc:creator><![CDATA[TdZ]]></dc:creator><pubDate>Sat, 15 Mar 2008 13:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to float zu void* casten? on Sat, 15 Mar 2008 14:21:08 GMT]]></title><description><![CDATA[<p>naja einem Zeiger kannst du keinen Wert zuweisen ...</p>
<pre><code class="language-cpp">const float value(3.5f);
void* ptr_void(new float(value));

delete static_cast&lt;float*&gt;(ptr_void);
</code></pre>
<p>...wobei das mit void* immer so ne Sache ist ... vllt. reicht dir auch eher sowas:</p>
<pre><code class="language-cpp">namespace interface
{
    struct Destroyer 
    {
        virtual ~Destroyer() {}
          virtual void destroy() = 0;
    };};

template &lt;typename destroy_type&gt;
struct Destroyer : public interface::Destroyer
{
    void destroy(void* ptr) { delete static_cast&lt;destroy_type&gt;(ptr); }
};
</code></pre>
<p>Dann zu jedem void-Zeiger einen interface::Destroyer-Zeiger dazu speichern, den du mit dem entsprechenden Destroyer initialisierst... z.B. bei float dann</p>
<pre><code class="language-cpp">struct item
{
    interface::Destroyer* ptr_destructor;
    void* ptr_data;
    ~item()
    { ptr_destructor-&gt;destroy(); delete ptr_destructor; }
} sample;

sample.ptr_destructor = new Destroyer&lt;float&gt;();
sample.ptr_data = new float(10.0f);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1474816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474816</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 15 Mar 2008 14:21:08 GMT</pubDate></item><item><title><![CDATA[Reply to float zu void* casten? on Sat, 15 Mar 2008 16:34:47 GMT]]></title><description><![CDATA[<p>Wow super, hat funktioniert, vielen Dank!</p>
<p>Ich hab außerdem gesehn, dass ich die Variable bei printf falsch angegeben hab, denn anstatt:</p>
<pre><code>printf(&quot;%f&quot;, data_ptr);
</code></pre>
<p>hätte es eigentlich</p>
<pre><code>printf(&quot;%f&quot;, *(float*)data_ptr);
</code></pre>
<p>heißen müssen.</p>
<p>Bin ich aber ersts dank Deiner Hilfe drauf gekommen, also nochmals danke!!!</p>
<p>Was man so alles verlernt, wenn berufsbedingt PHP das Höchste der Gefühle ist, was das Programmieren angeht <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/1474915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1474915</guid><dc:creator><![CDATA[TdZ]]></dc:creator><pubDate>Sat, 15 Mar 2008 16:34:47 GMT</pubDate></item></channel></rss>