<?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[array of void*]]></title><description><![CDATA[<p>Hallo,</p>
<p>in einer Klasse, die verschiedenen anderen Klassen Speicher geben kann, möchte ich mir den this Pointer der jeweiligen anderen Klasse merken.</p>
<p>Also hab ich ein Member void* owner[BlockCount];</p>
<p>An anderer Stelle hab ich nun:</p>
<pre><code class="language-cpp">for(MemSize_t i=0; i&lt;BlockCount; ++i)
    {
        if(owner[i]==0) //&lt;&lt;-- hier schreit der Compiler
        {
            memBlock.memPointer=memory[i];
            memBlock.memSize=BlockSize;
            return memBlock;
        }
    }
</code></pre>
<p>Fehler: <em><em>error: ‘void</em>’ is not a pointer-to-object type|</em>*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/309802/array-of-void</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 06:14:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/309802.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Oct 2012 17:59:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to array of void* on Sat, 27 Oct 2012 17:59:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in einer Klasse, die verschiedenen anderen Klassen Speicher geben kann, möchte ich mir den this Pointer der jeweiligen anderen Klasse merken.</p>
<p>Also hab ich ein Member void* owner[BlockCount];</p>
<p>An anderer Stelle hab ich nun:</p>
<pre><code class="language-cpp">for(MemSize_t i=0; i&lt;BlockCount; ++i)
    {
        if(owner[i]==0) //&lt;&lt;-- hier schreit der Compiler
        {
            memBlock.memPointer=memory[i];
            memBlock.memSize=BlockSize;
            return memBlock;
        }
    }
</code></pre>
<p>Fehler: <em><em>error: ‘void</em>’ is not a pointer-to-object type|</em>*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264723</guid><dc:creator><![CDATA[rdrewsfsdf]]></dc:creator><pubDate>Sat, 27 Oct 2012 17:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sat, 27 Oct 2012 18:07:15 GMT]]></title><description><![CDATA[<p>zwingt mich C++ dazu, Pointer auf die Basisklasse zu speichern?<br />
Ist es also nicht wie in C möglich, einfach nur void* Zeiger zu verwenden, wenn ich mir einfach nur die Adresse merken möchte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264724</guid><dc:creator><![CDATA[rdrewsfsdf]]></dc:creator><pubDate>Sat, 27 Oct 2012 18:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sat, 27 Oct 2012 18:10:00 GMT]]></title><description><![CDATA[<p>Natürlich, <code>void</code> enthält auch keine Typinformation. Lass mal <code>void</code> auf deutsch übersetzten. Was hast du eigentlich vor. Außerdem solltest du dir mal die Unterschiede zwischen Klassen und Objekten anschauen. <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/2264726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264726</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 27 Oct 2012 18:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sat, 27 Oct 2012 18:11:26 GMT]]></title><description><![CDATA[<p>Da der Compiler immer recht hat, ziehe ich mal deine Aussage &quot;Also hab ich ein Member void* owner[BlockCount];&quot; in Zweifel.</p>
<blockquote>
<p>Ist es also nicht wie in C möglich, einfach nur void* Zeiger zu verwenden, wenn ich mir einfach nur die Adresse merken möchte?</p>
</blockquote>
<p>Doch, klar geht das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264727</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 27 Oct 2012 18:11:26 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sat, 27 Oct 2012 18:17:51 GMT]]></title><description><![CDATA[<p>Klasse/Objekt ist schon klar, hab mich unsauber ausgedrückt.</p>
<p>Schreibe eine String Klasse die ohne new/delte auskommt.<br />
Dafür hab ich dann eine Klasse MemoryManagement, als SingleTon, welche mir aus einem Array einen Speicherblock gibt, und mitprotokoliert, von welcher String Instanz der Speicherblock verwendet wird.</p>
<p>Will ein String Speicher, so macht er<br />
MemoryManagement.Instance().getMemory(this,Speichergröße in byte);<br />
Im DTOR wiederum sagt er dann MemoryManagement.Instance().releaseMemory(this);</p>
<p>Anhand der this Zeiger weiß mein MemoryManagement welcher Speicher nun wieder frei wird, da sie in einer Tabelle protokolliert wer gerade welchen Speicher besitzt. Und um unabhängig zu bleiben, hätte ich halt void* owner[MAX] verwendet um die this Zeiger der Strings zu speichern.</p>
<p>Kann natürlich auch eine Basisklasse einführen, aber dann ist die &quot;lose Kopplung&quot; nicht mehr ganz so lose!<br />
Ich würde ja niemals einen void* dereferenzieren, sondern es reicht mir zu wissen welche Adresse das ist. Daher wunderts mich dass C++ das verbietet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264728</guid><dc:creator><![CDATA[rdrewsfsdf]]></dc:creator><pubDate>Sat, 27 Oct 2012 18:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sat, 27 Oct 2012 18:22:29 GMT]]></title><description><![CDATA[<p>kommando zurück, ich depp hab einen Funktionsparameter mit dem gleichen Namen, nämlich owner...</p>
<p>Sry für die Verschwendung eurer Lebenszeit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264729</guid><dc:creator><![CDATA[rdrewsfsdf]]></dc:creator><pubDate>Sat, 27 Oct 2012 18:22:29 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sat, 27 Oct 2012 19:23:57 GMT]]></title><description><![CDATA[<p><code>void*</code> ist in C++ böse, da es das strenge Typsystem unterläuft. Warum machst du aus der MemoryManage Klasse nicht ein Template? Nach dem Motto</p>
<pre><code class="language-cpp">template&lt;class T&gt; class MemoryManagement {T* owner;};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2264737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264737</guid><dc:creator><![CDATA[Der Tobi]]></dc:creator><pubDate>Sat, 27 Oct 2012 19:23:57 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sun, 28 Oct 2012 12:48:22 GMT]]></title><description><![CDATA[<p>Der Tobi schrieb:</p>
<blockquote>
<p><code>void*</code> ist in C++ böse, da es das strenge Typsystem unterläuft. Warum machst du aus der MemoryManage Klasse nicht ein Template? Nach dem Motto</p>
<pre><code class="language-cpp">template&lt;class T&gt; class MemoryManagement {T* owner;};
</code></pre>
</blockquote>
<p>naja dann hab ich aber mehrere Typen (MemoryManagement&lt;KlasseA&gt;, MemoryManagement&lt;KlasseB&gt; ), und somit auch mehrmals mein statisches Array m_Memory, welches aber nur einmal vorkommen soll. Ich umgehe damit gewissermaßen das, was ich mit dem Singleton erreichen möchte!</p>
<p>Solange ich nichts mit den Zeigern mache, außer dass ich mir die Adresse als eindeutige ID des Speicher-Besitzers merken möchte, finde ich void* nicht so böse.<br />
Sobald ich dann aber sowas in der Art mache m_Owner[i]-&gt;FunktionXY(), ist natürlich der Weg mit den Basisklassenzeigern vorzuziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264915</guid><dc:creator><![CDATA[rdrewsfsdf]]></dc:creator><pubDate>Sun, 28 Oct 2012 12:48:22 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sun, 28 Oct 2012 14:02:25 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich umgehe damit gewissermaßen das, was ich mit dem Singleton erreichen möchte!</p>
</blockquote>
<p>Nicht direkt, denn du hast das Array dann zwar mehrmals, aber für jeden Typen doch nur einmal und das ist mMn kein Unterlaufen deines Systems sondern eine Verbesserung.<br />
Außerdem: warum ein Array? Sollte sich die Anzahl an Basisklassenzeigern nicht verändern können, wenn jemand Speicher anfordert bzw. wieder freigibt?</p>
<p>Wenn ich mich nicht irre, sollte das klappen:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class MemoryManagement
{
    static vector&lt;T*&gt; _reserved; //Ich glaub vector&lt;pointer&gt; ist böse,
                                 //hab aber ptr_container grad nicht zur Verfügung
    static MemoryManagement* _instance;

    public:

        MemoryManagement* get_instance()
        {
            if (_instance == nullptr)
                return (_instance = new MemoryManagement);

            return _instance;

        }
};
template&lt;class T&gt;
MemoryManagement&lt;T&gt;* MemoryManagement&lt;T&gt;::_instance = nullptr;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2264937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264937</guid><dc:creator><![CDATA[Der Tobi]]></dc:creator><pubDate>Sun, 28 Oct 2012 14:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to array of void* on Sun, 28 Oct 2012 14:18:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>es geht darum, ohne new/delete auszukommen. Der von dir eingebaute vector verwendet aber genau das - nämlich new/delete.<br />
Ist für ein recht schwaches System. Ich möchte mir aber trotzdem ein bisschen was von dem C++ Luxus einbauen, den ich sonst von std::string gewohnt bin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2264946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2264946</guid><dc:creator><![CDATA[rdrewsfsdf]]></dc:creator><pubDate>Sun, 28 Oct 2012 14:18:41 GMT</pubDate></item></channel></rss>