<?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 und Default Constructor]]></title><description><![CDATA[<p>Hallo</p>
<p>Annahme, eine Klasse A hat einen privaten Default-Konstruktor, der auch<br />
nicht aufgerufen werden soll. Stattdessen gibt es einen mit Argument 'int x':</p>
<pre><code class="language-cpp">class A
{
public:
  A::A(int x);

private:
  A::A();
}

class B
{
public:
  B::B(int x,int y,int z);
private
  A array[3];
}

B::B(int x,int y,int z)
{
  array[0]=A(x);
  array[1]=A(y);
  array[2]=A(z);
}
</code></pre>
<p>Da Array-Elemente nicht in der Initialisierungsliste des Konstruktors von B<br />
vorkommen dürfen, kann ich array[0],array[1],array[2] erst im Body des<br />
Konstruktors zuweisen. Der Compiler beschwert sich natürlich, daß der Default-<br />
Konstruktor von A privat ist. Wie geht man da vor?</p>
<p>Fällt mir bloß ein, einen vector&lt;A&gt; zu nehmen und im Konstruktor von B mit<br />
push_back() zu arbeiten, aber gibts da auch eine syntaktisch richtige Lösung<br />
für Arrays?</p>
<p>Danke,lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272794/array-und-default-constructor</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 15:47:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272794.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Aug 2010 11:34:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array und Default Constructor on Wed, 25 Aug 2010 11:34:13 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Annahme, eine Klasse A hat einen privaten Default-Konstruktor, der auch<br />
nicht aufgerufen werden soll. Stattdessen gibt es einen mit Argument 'int x':</p>
<pre><code class="language-cpp">class A
{
public:
  A::A(int x);

private:
  A::A();
}

class B
{
public:
  B::B(int x,int y,int z);
private
  A array[3];
}

B::B(int x,int y,int z)
{
  array[0]=A(x);
  array[1]=A(y);
  array[2]=A(z);
}
</code></pre>
<p>Da Array-Elemente nicht in der Initialisierungsliste des Konstruktors von B<br />
vorkommen dürfen, kann ich array[0],array[1],array[2] erst im Body des<br />
Konstruktors zuweisen. Der Compiler beschwert sich natürlich, daß der Default-<br />
Konstruktor von A privat ist. Wie geht man da vor?</p>
<p>Fällt mir bloß ein, einen vector&lt;A&gt; zu nehmen und im Konstruktor von B mit<br />
push_back() zu arbeiten, aber gibts da auch eine syntaktisch richtige Lösung<br />
für Arrays?</p>
<p>Danke,lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944175</guid><dc:creator><![CDATA[cout3]]></dc:creator><pubDate>Wed, 25 Aug 2010 11:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Default Constructor on Wed, 25 Aug 2010 11:38:00 GMT]]></title><description><![CDATA[<p>Das geht nicht. Umgehe das Problem indem du keine Arrays benutzt:</p>
<p><a href="http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5" rel="nofollow">http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944179</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 25 Aug 2010 11:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Default Constructor on Wed, 25 Aug 2010 11:54:45 GMT]]></title><description><![CDATA[<p>Was gehen würde, wäre einen Defaultparameter zu verwenden.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
    public:
        A::A(int = 0);
};

class B
{
    public:
        B::B(int x,int y,int z);
    private:
        A array[3];
};

A::A(int x)
{
}

B::B(int x,int y,int z)
{
  array[0]=A(x);
  array[1]=A(y);
  array[2]=A(z);
}

int main()
{
}
</code></pre>
<p>[ EDIT ] Sollten Defaultparameter lieber im Prototyp oder bei der Definition angegeben werden ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944181</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 25 Aug 2010 11:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Default Constructor on Wed, 25 Aug 2010 12:03:13 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>...indem du keine Arrays benutzt:</p>
</blockquote>
<p>Habe dazu gerade mal eine allgemeine Frage.<br />
Sollte man einen Vektor immer einem Array vorziehen, auch bei z.B. so etwas: ?</p>
<pre><code class="language-cpp">int ar[4] = {}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1944193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944193</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 25 Aug 2010 12:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Default Constructor on Wed, 25 Aug 2010 12:12:53 GMT]]></title><description><![CDATA[<p>&quot;Immer&quot; ist ein starkes Wort. Was soll man darauf anderes Antworten als &quot;Nein&quot;?</p>
<p>Gerade Vector und Array sind nicht 100% äquivalent, der vector entspricht ja einem Zeiger auf ein Array auf dem Heap, während das Array sowohl auf dem Heap als auch auf dem Stack liegen kann. Bei Arrays die man auf den Stack legen würde, sollte man eher eine kleine Kapselklasse mit einem statischen Arraymember benutzen, z.B. boost::array.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944196</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 25 Aug 2010 12:12:53 GMT</pubDate></item></channel></rss>