<?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[der default konstruktor will nicht private sein (gcc)]]></title><description><![CDATA[<p>hi, ich möchte den default-konstruktor als auch<br />
den copy-konstruktor meiner klasse private machen</p>
<p>class dummy{<br />
private:<br />
dummy();<br />
dummy(dummy const&amp;);<br />
};</p>
<p>jetzt geht man ja davon aus, das man die klasse<br />
nicht mehr ohne argumente initialiseren kann,<br />
d.h.</p>
<p>dummy d; // -&gt; compile-time-error</p>
<p>sollte darauf hinweisen, dass der konstruktor<br />
private ist. tut er auch. wenn man aber mit<br />
empty elippsis initialisiert</p>
<p>dummy d(); // -&gt; no compile-time-error</p>
<p>beschwert er sich nicht, d.h. ruft zudem auch nicht<br />
den default constructor auf. nur welchen ruft er<br />
dann auf bzw. ergänzt der compiler ungefragt?</p>
<p>danke, ingo.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195563/der-default-konstruktor-will-nicht-private-sein-gcc</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 08:18:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195563.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Oct 2007 00:32:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 00:32:17 GMT]]></title><description><![CDATA[<p>hi, ich möchte den default-konstruktor als auch<br />
den copy-konstruktor meiner klasse private machen</p>
<p>class dummy{<br />
private:<br />
dummy();<br />
dummy(dummy const&amp;);<br />
};</p>
<p>jetzt geht man ja davon aus, das man die klasse<br />
nicht mehr ohne argumente initialiseren kann,<br />
d.h.</p>
<p>dummy d; // -&gt; compile-time-error</p>
<p>sollte darauf hinweisen, dass der konstruktor<br />
private ist. tut er auch. wenn man aber mit<br />
empty elippsis initialisiert</p>
<p>dummy d(); // -&gt; no compile-time-error</p>
<p>beschwert er sich nicht, d.h. ruft zudem auch nicht<br />
den default constructor auf. nur welchen ruft er<br />
dann auf bzw. ergänzt der compiler ungefragt?</p>
<p>danke, ingo.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388245</guid><dc:creator><![CDATA[loehken]]></dc:creator><pubDate>Fri, 19 Oct 2007 00:32:17 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 00:52:56 GMT]]></title><description><![CDATA[<p>loehken schrieb:</p>
<blockquote>
<p>nur welchen ruft er<br />
dann auf bzw. ergänzt der compiler ungefragt?</p>
</blockquote>
<p>Er ruft gar keinen auf, da du mit dummy d(); kein Objekt anlegst, sondern eine Funktion namens d deklarierst, die keine Parameter bekommt und ein dummy zurückgibt. Wenn du ein Objekt über den Default-Ctor initialisierst, musst du das also immer ohne die Klammern machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388247</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Fri, 19 Oct 2007 00:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 05:45:47 GMT]]></title><description><![CDATA[<p>Übrigens mußt du den Default-Ctor nicht privat definieren, um ihn &quot;auszuschalten&quot; - der Compiler erzeugt dir nur einen Default-Ctor, wenn deine Klasse <strong>gar keinen</strong> selbstgeschriebenen Ctor hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388263</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 Oct 2007 05:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 07:13:05 GMT]]></title><description><![CDATA[<p>HI loehken,</p>
<p>probier mal zwei Dinge:<br />
1.) cpp-Tags hier im Forum und<br />
2.) ruf mal ein dummy-Attribut auf, dann wirst Du den Unterschied merken.</p>
<pre><code class="language-cpp">class dummy{
   int i;
private:
   dummy();
   dummy(dummy const&amp;);
};
int main() {
   dummy d(); // -&gt; no compile-time-error
   d.i = 1; // -&gt; compile-time-error
...
</code></pre>
<p>Die Fehlermeldung sagt vllt. etwas im Zusammenhang mit this-&gt;thats Post. <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388315</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 19 Oct 2007 07:13:05 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 08:31:49 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>loehken schrieb:</p>
<blockquote>
<p>nur welchen ruft er<br />
dann auf bzw. ergänzt der compiler ungefragt?</p>
</blockquote>
<p>Er ruft gar keinen auf, da du mit dummy d(); kein Objekt anlegst, sondern eine Funktion namens d deklarierst, die keine Parameter bekommt und ein dummy zurückgibt. Wenn du ein Objekt über den Default-Ctor initialisierst, musst du das also immer ohne die Klammern machen.</p>
</blockquote>
<p>dank dir, damit hats sich erledigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388362</guid><dc:creator><![CDATA[loehken]]></dc:creator><pubDate>Fri, 19 Oct 2007 08:31:49 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 08:35:59 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>...Wenn du ein Objekt über den Default-Ctor initialisierst, musst du das also immer ohne die Klammern machen.</p>
</blockquote>
<p>Kleine Ergänzung: Mit new ist das allerdings erlaubt (wenn auch unnötig).</p>
<pre><code class="language-cpp">dummy* d1 = new dummy(); // eindeutig: Kann keine Funktion sein.
dummy* d2 = new dummy;   // macht dasselbe
</code></pre>
<p>Da gab's doch noch was im Zusammenhang mit &quot;new[] und Initialisierung&quot;, wo das relevant war .... aber das fällt mir gerade nicht ein.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388365</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 19 Oct 2007 08:35:59 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 12:12:30 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Da gab's doch noch was im Zusammenhang mit &quot;new[] und Initialisierung&quot;, wo das relevant war .... aber das fällt mir gerade nicht ein.</p>
</blockquote>
<p>du meinst aber nicht die notwendigkeit, dass der default-konstruktor definiert<br />
sein muss, um arrays von dummy zu erstellen, oder, sprich:</p>
<pre><code class="language-cpp">class dummy{
dummy();
};

dummy d[3]; // -&gt; compile-time error, default constructor of dummy is private.
</code></pre>
<p>ingo.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388502</guid><dc:creator><![CDATA[loehken]]></dc:creator><pubDate>Fri, 19 Oct 2007 12:12:30 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 12:23:21 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Da gab's doch noch was im Zusammenhang mit &quot;new[] und Initialisierung&quot;, wo das relevant war .... aber das fällt mir gerade nicht ein.</p>
</blockquote>
<p>Meinst Du das?</p>
<pre><code class="language-cpp">int* a = new int[100]; // uninitialized
int* a = new int[100] (); // default-initialized
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1388514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388514</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 19 Oct 2007 12:23:21 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Fri, 19 Oct 2007 12:32:28 GMT]]></title><description><![CDATA[<p>Kann ich der &quot;Array-Initialisierung&quot; auch jeden beliebigen Ctor aufrufen?</p>
<p>Weil dann ginge ja theoretisch auch sowas:</p>
<pre><code class="language-cpp">T* foo = new T*[size](new T[size2](2));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1388521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388521</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Fri, 19 Oct 2007 12:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Sat, 20 Oct 2007 11:29:41 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Da gab's doch noch was im Zusammenhang mit &quot;new[] und Initialisierung&quot;, wo das relevant war .... aber das fällt mir gerade nicht ein.</p>
</blockquote>
<p>Meinst Du das?</p>
<pre><code class="language-cpp">int* a = new int[100]; // uninitialized
int* a = new int[100] (); // default-initialized
</code></pre>
</blockquote>
<p>Genau !!<br />
Das war's.</p>
<p>Danke,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388911</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 20 Oct 2007 11:29:41 GMT</pubDate></item><item><title><![CDATA[Reply to der default konstruktor will nicht private sein (gcc) on Sat, 20 Oct 2007 11:42:21 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>Kann ich der &quot;Array-Initialisierung&quot; auch jeden beliebigen Ctor aufrufen?</p>
</blockquote>
<p>Leider nicht. Man kann ein bisschen tricksen, indem man Defaultargumente nutzt - das ist allerdings etwas umständlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388914</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 20 Oct 2007 11:42:21 GMT</pubDate></item></channel></rss>