<?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 von Objekten konstruieren.]]></title><description><![CDATA[<p>Hallo,<br />
gibt es eine Möglichkeit ein Array von Objekten mit Startwerten zu erstellen?</p>
<pre><code class="language-cpp">class MyObject
{
	bool bBrain;
public:
	MyObject ( bool bPresent )
	{
		bBrain = bPresent;
	}
};

int main()
{
	MyObject mo ( true ); // Ok.
	MyObject mo[5](true); // Geht nicht.
         MyObject mo(true)[5]; // Geht auch nicht.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/252181/array-von-objekten-konstruieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 18:31:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252181.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Oct 2009 22:21:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Thu, 15 Oct 2009 22:21:13 GMT]]></title><description><![CDATA[<p>Hallo,<br />
gibt es eine Möglichkeit ein Array von Objekten mit Startwerten zu erstellen?</p>
<pre><code class="language-cpp">class MyObject
{
	bool bBrain;
public:
	MyObject ( bool bPresent )
	{
		bBrain = bPresent;
	}
};

int main()
{
	MyObject mo ( true ); // Ok.
	MyObject mo[5](true); // Geht nicht.
         MyObject mo(true)[5]; // Geht auch nicht.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1793149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793149</guid><dc:creator><![CDATA[construct0r]]></dc:creator><pubDate>Thu, 15 Oct 2009 22:21:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Thu, 15 Oct 2009 22:26:47 GMT]]></title><description><![CDATA[<p>Das geht so nicht. Aber mit std::vector gab es da was dafür, glaube ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793151</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 15 Oct 2009 22:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Thu, 15 Oct 2009 22:36:36 GMT]]></title><description><![CDATA[<p>Achso, anstatt eines Arrays nen Vector als 'Array Ersatz' nehmen meinst du?</p>
<pre><code class="language-cpp">MyObject mo ( true );
	vector &lt;MyObject&gt; vmo; // 'Array Ersatz'.
	for ( int i = 0; i&lt;5; i++ )
		vmo.push_back(mo);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1793153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793153</guid><dc:creator><![CDATA[construct0r]]></dc:creator><pubDate>Thu, 15 Oct 2009 22:36:36 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Thu, 15 Oct 2009 22:41:48 GMT]]></title><description><![CDATA[<p>Ja. Und dann noch schauen, welche Konstruktoren der vector alles hat und den coolen nehmen, der die Dir Schleife auch noch abnimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793154</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 15 Oct 2009 22:41:48 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Thu, 15 Oct 2009 23:01:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class braindead
{
public:
	static braindead initproto;
private:
	bool bBrain;
public:
	braindead ( bool bPresent )
	{
		bBrain = bPresent;
	}
	braindead ( const braindead&amp; other = initproto )
		: bBrain( initproto.bBrain )
	{}
};

braindead braindead::initproto( true ); // Default-Initialisierung hier unbedingt vermeiden!

int main()
{
	braindead::initproto = false;
	braindead brainless[42];
}
</code></pre>
<p>Der Name ist Programm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793159</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 15 Oct 2009 23:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Thu, 15 Oct 2009 23:30:17 GMT]]></title><description><![CDATA[<p>Danke Euch beiden!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a>:</p>
<blockquote>
<pre><code class="language-cpp">braindead ( const braindead&amp; other = initproto ) // Wozu die Referenz?
        : bBrain( initproto.bBrain )
    {}
</code></pre>
</blockquote>
<p>Sieht interessant aus. Warum hast du die Referenz in der Parameterliste<br />
des Konstruktors drin?</p>
<p>Würde das nicht ohne gehen?</p>
<pre><code class="language-cpp">braindead () // Ohne Referenz.
        : bBrain( initproto.bBrain )
    {}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1793165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793165</guid><dc:creator><![CDATA[construct0r]]></dc:creator><pubDate>Thu, 15 Oct 2009 23:30:17 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Thu, 15 Oct 2009 23:38:42 GMT]]></title><description><![CDATA[<p>construct0r schrieb:</p>
<blockquote>
<p>Danke Euch beiden!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a>:</p>
<blockquote>
<pre><code class="language-cpp">braindead ( const braindead&amp; other = initproto ) // Wozu die Referenz?
        : bBrain( initproto.bBrain )
    {}
</code></pre>
</blockquote>
<p>Sieht interessant aus. Warum hast du die Referenz in der Parameterliste<br />
des Konstruktors drin?</p>
<p>Würde das nicht ohne gehen?</p>
<pre><code class="language-cpp">braindead () // Ohne Referenz.
        : bBrain( initproto.bBrain )
    {}
</code></pre>
</blockquote>
<p>klar - aber so hat er standard-ctor und copy-ctor in einem rutsch implementiert...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793166</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 15 Oct 2009 23:38:42 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Thu, 15 Oct 2009 23:45:25 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>klar - aber so hat er standard-ctor und copy-ctor in einem rutsch implementiert...<br />
bb</p>
</blockquote>
<p>aaaaaaaaaah, ach so!</p>
<p>Zeile 17:</p>
<blockquote>
<pre><code class="language-cpp">braindead braindead::initproto( true ); // Default-Initialisierung hier unbedingt vermeiden!
</code></pre>
</blockquote>
<p>Wenn ich das richtig sehe, wird damit das eingebettete statische Objekt erzeugt.<br />
Was ist mit</p>
<blockquote>
<p>Default-Initialisierung hier unbedingt vermeiden!</p>
</blockquote>
<p>gemeint und warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793170</guid><dc:creator><![CDATA[construct0r]]></dc:creator><pubDate>Thu, 15 Oct 2009 23:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 00:03:52 GMT]]></title><description><![CDATA[<p>construct0r schrieb:</p>
<blockquote>
<p>Was ist mit</p>
<blockquote>
<p>Default-Initialisierung hier unbedingt vermeiden!</p>
</blockquote>
<p>gemeint und warum?</p>
</blockquote>
<p>Weil dann das Objekt zum Initialisieren sich erst eine Referenz auf soch selber holt und eine Kopie des noch nicht inistialisierten selbst anlegt, was vom C++-Standard vermutlich nicht abgedeckt wirdm und wenn es nicht nur um einen bool ginge, sondern um einen string oder noch was dickeres, es auch bestimmt zu feinem Absturz käme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793173</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 16 Oct 2009 00:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 08:38:37 GMT]]></title><description><![CDATA[<p>construct0r schrieb:</p>
<blockquote>
<p>Warum hast du die Referenz in der Parameterliste<br />
des Konstruktors drin?</p>
</blockquote>
<p>Weil ich es ursprünglich noch etwas anders machen wollte, am Ende stand es zufällig so da. Man kann ja verschieden abwandeln (z.B. durch einen Zeiger, der jeweils auf eine geeignete Generatorfunktion verweist) - ohne dass sich etwas verbessert. Die Notwendigkeit, sich auf die vorherige Initialisierung eines anderen Objektes verlassen zu müssen, ist ein k.O.-Kriterium. Zudem müsste man in multithreaded Programmen wohl mit thread-lokalem Speicher arbeiten oder zusätzlich synhronisieren, was die Sache witer verkompliziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793236</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 16 Oct 2009 08:38:37 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 09:32:44 GMT]]></title><description><![CDATA[<p>Alternativ gibts natürlich auch wieder ne boost Lösung für arrays statt vector <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>
<pre><code class="language-cpp">class MyObject
{
	bool bBrain;
public:
	MyObject ( bool bPresent )
	{
		bBrain = bPresent;
	}
};

int main()
{
    boost::array&lt;MyObject, 5&gt; mo = boost::assign::listof(true).repeat(4,true);
    //bzw evtl. auch folgendes:
    boost::array&lt;MyObject, 5&gt; mo = boost::assign::repeat(5,true);
}
</code></pre>
<p>Bei letzterem bin ich nicht 100%ig sicher obs klappt, die Doku ist da etwas dürftig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793259</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 16 Oct 2009 09:32:44 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 12:49:09 GMT]]></title><description><![CDATA[<p>Oder wenns auch nach der Initialisierung sein darf: <code>std::fill()</code> . Nachzuschauen auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a>...</p>
<p>Allerdings ist die Verwendung von STL-Containern (evtl. <code>std::tr1::array</code> als Array-Wrapper) sicher keine schlechte Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793374</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 16 Oct 2009 12:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 15:29:27 GMT]]></title><description><![CDATA[<p>Ich würds lieber mit einer Schleife und Zeigern machen, also jedes Objekt einzeln mit new erzeugen. So ist jedes Objekt individuell inizialisierbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793480</guid><dc:creator><![CDATA[ich++]]></dc:creator><pubDate>Fri, 16 Oct 2009 15:29:27 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 16:13:36 GMT]]></title><description><![CDATA[<p>ich++ schrieb:</p>
<blockquote>
<p>Ich würds lieber mit einer Schleife und Zeigern machen, also jedes Objekt einzeln mit new erzeugen. So ist jedes Objekt individuell inizialisierbar.</p>
</blockquote>
<p>Dafür hast du sie dann nicht in einem Array, also nicht hintereinander im Speicher. Einzeinitialisierungen gehen auch mit boost::assign:</p>
<pre><code class="language-cpp">boost::array&lt;MyObject, 5&gt; mo = boost::assign::list_of(true),false,true,true,false;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1793500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793500</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 16 Oct 2009 16:13:36 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 18:20:32 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Einzeinitialisierungen gehen auch mit boost::assign:</p>
<pre><code class="language-cpp">boost::array&lt;MyObject, 5&gt; mo = boost::assign::list_of(true),false,true,true,false;
</code></pre>
</blockquote>
<p><strong>1.</strong> Meinst du nicht so?</p>
<pre><code class="language-cpp">boost::array&lt;MyObject, 5&gt; mo = boost::assign::list_of(true)(false)(true)(true)(false);
</code></pre>
<p>Der MSVC++ zumindest akzeptiert die Komma-Variante nicht. Mit Klammern gehts, aber da finde ich die ()()-Möglichkeit etwas schöner:</p>
<pre><code class="language-cpp">boost::array&lt;MyObject, 5&gt; mo = (boost::assign::list_of(true),false,true,true,false);
</code></pre>
<p><strong>2.</strong> Ist das bei PODs, wie <code>boost::array</code> eines ist, unnötig, da dort die Aggregatsinitialisierungsliste verwendet werden kann. So kann man nämlich direkt initialisieren und muss sich keine Gedanken um die zweifelhafte Wegoptimierung des temporären Containers machen. <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>
<pre><code class="language-cpp">boost::array&lt;MyObject, 5&gt; mo = {true, false, true, true, false};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1793554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793554</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 16 Oct 2009 18:20:32 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 18:48:15 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Dafür hast du sie dann nicht in einem Array, also nicht hintereinander im Speicher.</p>
</blockquote>
<p>Ich habe die Zeiger auf die Objekte hintereinander im Speicher:</p>
<pre><code class="language-cpp">MyObject* my_object_array[N];
for ( int i=0; i&lt;N; i++ )
 my_object_array = new MyObject ( ... /* Individuelle Konstruktion */
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1793562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793562</guid><dc:creator><![CDATA[ich++]]></dc:creator><pubDate>Fri, 16 Oct 2009 18:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 18:53:51 GMT]]></title><description><![CDATA[<p>nein - die objekte an sich befinden sich eben _nicht_ hintereinander im speicher - lediglich die pointer darauf befinden sich hintereinander im speicher:</p>
<pre><code>array:     _____ eins
----      /
| 0|  ----+-------- null
| 1|  ----´
| .| .
| .| .       ___ n
| .| .      |
| N|  ------´
----
</code></pre>
<p>noch dazu, muss N zur compile-zeit bekannt sein...</p>
<p>bb</p>
<p>edit: und außerdem musst du dich ums freigeben auch noch selbst kümmern... alles in allem eine höchst unkomfortable lösung, die mind. fehleranfälliger und langsamer(je nach dem, was du willst) etc. sein wird...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793564</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 16 Oct 2009 18:53:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 19:24:35 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>nein - die objekte an sich befinden sich eben _nicht_ hintereinander im speicher - lediglich die pointer darauf befinden sich hintereinander im speicher:</p>
</blockquote>
<p>ich++ schrieb:</p>
<blockquote>
<p>Ich habe die Zeiger auf die Objekte hintereinander im Speicher:</p>
</blockquote>
<p><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/1793579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793579</guid><dc:creator><![CDATA[ich++]]></dc:creator><pubDate>Fri, 16 Oct 2009 19:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 19:31:15 GMT]]></title><description><![CDATA[<p>ich++ schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>nein - die objekte an sich befinden sich eben _nicht_ hintereinander im speicher - lediglich die pointer darauf befinden sich hintereinander im speicher:</p>
</blockquote>
<p>ich++ schrieb:</p>
<blockquote>
<p>Ich habe die Zeiger auf die Objekte hintereinander im Speicher:</p>
</blockquote>
<p><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>Verwirrung im Strafraum. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793581</guid><dc:creator><![CDATA[Gelling]]></dc:creator><pubDate>Fri, 16 Oct 2009 19:31:15 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Objekten konstruieren. on Fri, 16 Oct 2009 19:47:07 GMT]]></title><description><![CDATA[<p>Gelling schrieb:</p>
<blockquote>
<p>ich++ schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>nein - die objekte an sich befinden sich eben _nicht_ hintereinander im speicher - lediglich die pointer darauf befinden sich hintereinander im speicher:</p>
</blockquote>
<p>ich++ schrieb:</p>
<blockquote>
<p>Ich habe die Zeiger auf die Objekte hintereinander im Speicher:</p>
</blockquote>
<p><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>Verwirrung im Strafraum. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>oh verdammt <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=";D"
      alt="😉"
    /> waren aber wenigsten drei kurze wörtchen, die ich da überlesen hab <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=";D"
      alt="😉"
    /><br />
naja - die anderen nachteile bleiben...<br />
ich geh dann mal besser ;o)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1793589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1793589</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 16 Oct 2009 19:47:07 GMT</pubDate></item></channel></rss>