<?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[Allokator und Ctors]]></title><description><![CDATA[<p>Hallo<br />
Ich habe eine Template Allokator Klasse mit integriertem Stack, welche bis dato recht gut funktioniert - jedoch nur mit dem Standardkonsturktor.<br />
Woher sollen denn auch die jeweiligen Parameter bekannt sein.... <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>
<p>Gibt es da Tricks, boost-magie oder Makros die einem die Standardkonstruktoren der BASISKLASSE bereit stellen? Oder wie wird sowas gemacht.... <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="😕"
    /><br />
Vielleicht geht da auch eine kleine (abstrakte) Unterklasse, dessen Basis dem Allokator übergeben wird und die Parameter zwischenspeichert oder etwas in der Art?</p>
<pre><code class="language-cpp">template&lt;class BASE, class DERIVED, int SIZE&gt;
BASE* allocator_t&lt;BASE, DERIVED, SIZE&gt;::alloc()
{
        //Zensierte stack sachen ...
	DERIVED* ptr = (DERIVED*)(operator new(sizeof(DERIVED)*SIZE));
	new ((void*)ptr) DERIVED(); //Hier ja leider nur Standard Ctor
	return (BASE*)ptr;
}
</code></pre>
<p>TYVVM! <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/245499/allokator-und-ctors</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 18:28:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245499.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Jul 2009 23:05:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Allokator und Ctors on Tue, 14 Jul 2009 23:05:03 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich habe eine Template Allokator Klasse mit integriertem Stack, welche bis dato recht gut funktioniert - jedoch nur mit dem Standardkonsturktor.<br />
Woher sollen denn auch die jeweiligen Parameter bekannt sein.... <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>
<p>Gibt es da Tricks, boost-magie oder Makros die einem die Standardkonstruktoren der BASISKLASSE bereit stellen? Oder wie wird sowas gemacht.... <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="😕"
    /><br />
Vielleicht geht da auch eine kleine (abstrakte) Unterklasse, dessen Basis dem Allokator übergeben wird und die Parameter zwischenspeichert oder etwas in der Art?</p>
<pre><code class="language-cpp">template&lt;class BASE, class DERIVED, int SIZE&gt;
BASE* allocator_t&lt;BASE, DERIVED, SIZE&gt;::alloc()
{
        //Zensierte stack sachen ...
	DERIVED* ptr = (DERIVED*)(operator new(sizeof(DERIVED)*SIZE));
	new ((void*)ptr) DERIVED(); //Hier ja leider nur Standard Ctor
	return (BASE*)ptr;
}
</code></pre>
<p>TYVVM! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1743143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743143</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Tue, 14 Jul 2009 23:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Allokator und Ctors on Tue, 14 Jul 2009 23:28:35 GMT]]></title><description><![CDATA[<p>Pigeon schrieb:</p>
<blockquote>
<p>Gibt es da Tricks, boost-magie oder Makros die einem die Standardkonstruktoren der BASISKLASSE bereit stellen? Oder wie wird sowas gemacht.... <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><strong>Die</strong> Standardkonstruktor<strong>en</strong>? Standardkonstruktor gibts höchstens einen pro Klasse. Ich nehme an, du meinst alle Konstruktoren?</p>
<p>Kannst du denn nicht deinen <code>DERIVED</code> -Standardkonstruktor so einrichten, dass er die Klasse (und damit auch die Basisklasse) wie gewünscht initialisiert? Eventuell verstehe ich dich aber auch falsch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743154</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 14 Jul 2009 23:28:35 GMT</pubDate></item><item><title><![CDATA[Reply to Allokator und Ctors on Wed, 15 Jul 2009 06:26:25 GMT]]></title><description><![CDATA[<p>mal abgesehen davon, dass die Schreibweise etwas ungewöhnlich ist (Bezeichner die nur aus Großbuchstaben bestehen sind meistens Makros oder Enums) und die ganzen C-Casts mit den Pointern unnötig sind, ist es für Allokatoren einfach nicht üblich, Konstruktoren aufzurufen. Allokatoren sind einzig zur Speicherbeschaffung da. Wofür willst du die Dinger denn einsetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743204</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 15 Jul 2009 06:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to Allokator und Ctors on Wed, 15 Jul 2009 08:15:47 GMT]]></title><description><![CDATA[<p>- Ja selbstverständlich meine ich alle Konstruktoren... <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="🙄"
    /> ...<br />
Das soll dann irgendwie so aussehen können: allokator-&gt;alloc(arg1,arg2,blablab);<br />
Ich könnte das ja über den Kopierkonstruktor machen fällt mir gerade ein:</p>
<pre><code class="language-cpp">saeugetier_t* maus = allokator-&gt;alloc(saeugetier_t(nachwuchs,lebensdauer));
</code></pre>
<p>Dafür müsste dann jede Ableitung per Basis kopierbar sein.</p>
<pre><code class="language-cpp">ratte_t::ratte_t(const saeugetier_t&amp;);
</code></pre>
<p>Wie wär das? <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="😕"
    /><br />
- In Templates schreibe ich die Bezeichner immer groß <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> aber das lässt sich ja recht fix ändern.<br />
- Die Sind dafür da um an <strong>einer</strong> Stelle klarzumachen ob irgendeine Ableitung oder die Basis verwendet werden soll. Zudem Gibt der bis zu einer gewisse Menge den Speicher nicht frei um theoretisch schneller neu allokieren zu können. (Aber bis jetzt habe ich da noch keinen UNterschied messen können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> ).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743261</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Wed, 15 Jul 2009 08:15:47 GMT</pubDate></item><item><title><![CDATA[Reply to Allokator und Ctors on Wed, 15 Jul 2009 10:31:43 GMT]]></title><description><![CDATA[<p>Das kannste von vorn bis hinten in de Tonne treten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743368</guid><dc:creator><![CDATA[Meindl]]></dc:creator><pubDate>Wed, 15 Jul 2009 10:31:43 GMT</pubDate></item><item><title><![CDATA[Reply to Allokator und Ctors on Wed, 15 Jul 2009 10:36:26 GMT]]></title><description><![CDATA[<p>Meindl schrieb:</p>
<blockquote>
<p>Das kannste von vorn bis hinten in de Tonne treten!</p>
</blockquote>
<p>Kann man das auch begründen oder sogar verbessern? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743374</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Wed, 15 Jul 2009 10:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to Allokator und Ctors on Wed, 15 Jul 2009 11:05:59 GMT]]></title><description><![CDATA[<p>biete in der basisklasse new an und lies &quot;effektiv c++ programmieren&quot;.</p>
<pre><code class="language-cpp">class Base
{
   void* operator new(size_t size,allokator&amp; a)
   {
      return a.alloc(size);
   }
};
...
saeugetier_t* s1=new(all) saugetier(nachwuchs,lebensdauer);
ratte_t* r1=new(all) ratte(nachwuchs,lebensdauer,nagezahnlaenge);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1743407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743407</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 15 Jul 2009 11:05:59 GMT</pubDate></item></channel></rss>