<?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[structs in structs oder doch struct in klasse?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine klasse/struktur bilden, wobei bei der sowieso alles public sein wird. (sinn außen vor gelassen)</p>
<p>Jetzt würde ich gerne wissen ob es besser ist eine struct in einer struct zu verwenden oder eher eine klasse die eine struct verwendet?<br />
Oder gar nur Klassen?</p>
<p>Für structures kann man ja Heap so alloziieren:</p>
<pre><code class="language-cpp">struct line {...};
  line l = (line *) malloc(sizeof(line));
</code></pre>
<p>Kann man denn auch von KLassen sowas machen?</p>
<p>oder wie ist das dann analog wenn ich für eine Klasse speicher reservieren will?</p>
<p>Wie ist denn so das prinzipielle vorgehen?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188556/structs-in-structs-oder-doch-struct-in-klasse</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 04:33:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188556.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Aug 2007 17:24:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Wed, 01 Aug 2007 17:24:46 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine klasse/struktur bilden, wobei bei der sowieso alles public sein wird. (sinn außen vor gelassen)</p>
<p>Jetzt würde ich gerne wissen ob es besser ist eine struct in einer struct zu verwenden oder eher eine klasse die eine struct verwendet?<br />
Oder gar nur Klassen?</p>
<p>Für structures kann man ja Heap so alloziieren:</p>
<pre><code class="language-cpp">struct line {...};
  line l = (line *) malloc(sizeof(line));
</code></pre>
<p>Kann man denn auch von KLassen sowas machen?</p>
<p>oder wie ist das dann analog wenn ich für eine Klasse speicher reservieren will?</p>
<p>Wie ist denn so das prinzipielle vorgehen?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1336735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336735</guid><dc:creator><![CDATA[gast_xy]]></dc:creator><pubDate>Wed, 01 Aug 2007 17:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Wed, 01 Aug 2007 17:31:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Auch bei structs sollte man bei C++ new statt malloc verwenden. Structs und Klassen sind bei C++ fast das Gleiche. Der einzige Unterschied liegt im default-Gültigkeitsbereich der Member. Der ist bei Structs public und bei Klassen private.<br />
Also können bei C++ Structs auch Memberfunktionen, Konstruktor, Destruktor, Operatoren etc. haben. man kann erben usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1336743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336743</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 01 Aug 2007 17:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Wed, 01 Aug 2007 17:32:37 GMT]]></title><description><![CDATA[<ol>
<li>new - new[] allokiert genauso auf dem Heap</li>
<li>Structs und Klassen sind /<em>identisch</em>/ außer dem default-Public der structs</li>
<li>Mit malloc() kannst du sowohl structs als auch calsses nur allokieren wenn diese POD sind</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1336747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336747</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Wed, 01 Aug 2007 17:32:37 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Wed, 01 Aug 2007 17:33:30 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>In C++ ist der einzige Unterschied zwischen class und struct die Standard-Sichtbarbeit der Member. Demzufolge kannst du dir auch aussuchen was du nimmst.<br />
Nicht verwenden solltest du aber malloc und Co., dafür gibts in C++ new und delete. Dann klappts auch mit den Konstruktoren.</p>
<p>/Edit : zu langsam...</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1336748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336748</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 01 Aug 2007 17:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Wed, 01 Aug 2007 17:43:36 GMT]]></title><description><![CDATA[<p>Danke euch - macht es z.B Sinn für nur 3 Datenwerte die aber zusammengehören ne eigene Klasse anzulegen? Eher sinnvoller da ein struct zu bauen oder nicht?</p>
<p>Ist es üblich das man in einer Klasse andere KLassen verwendet - also z.B so:</p>
<pre><code class="language-cpp">#include &quot;Class2.h&quot;
#include &quot;Class3.h&quot;

Class class1
{
   Class();
   ~Class();

    Class2 cl2;
    Class3 cl3;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1336754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336754</guid><dc:creator><![CDATA[gast_xy]]></dc:creator><pubDate>Wed, 01 Aug 2007 17:43:36 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Wed, 01 Aug 2007 17:50:23 GMT]]></title><description><![CDATA[<p>Wenn man nur drei Datenwerte kapseln möchte, würde ich eine struct nehmen.<br />
Ja, es ist durchaus üblich Klassen in anderen Klassen zu verwenden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">struct struct1
{
   Class();
   ~Class();

    Class2 cl2;
    Class3 cl3;
};
</code></pre>
<p>Konstruktor und Destruktor sollte man aber nur anlegen wenn man ihn wirklich braucht. Ansonsten erledigt das der Compiler für dich schon sehr schön.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1336758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336758</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 01 Aug 2007 17:50:23 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Wed, 01 Aug 2007 17:56:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Konstruktor und Destruktor sollte man aber nur anlegen wenn man ihn wirklich braucht.</p>
</blockquote>
<p>echt? ich dachte ein leerer konstruktor sollte immer vorhanden sein.<br />
Wenn wir schon dabei sind: Wie soll ich denn dann ein Objekt instantiieren wenn ich keinen Konstruktor habe?</p>
<p>also wie sollte ich eine Methode einer Klasse aufrufen können?</p>
<pre><code class="language-cpp">Class c = Class::Class();
c.my_method();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1336762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336762</guid><dc:creator><![CDATA[gast_xy]]></dc:creator><pubDate>Wed, 01 Aug 2007 17:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Wed, 01 Aug 2007 18:02:21 GMT]]></title><description><![CDATA[<p>Wenn du keinen Konstruktor definierst macht das der Compiler für dich. Du kannst also ganz normal mit deiner Klasse arbeiten.</p>
<pre><code class="language-cpp">Class c; //hierbei wird der Konstruktor auch aufgerufen
c.my_method();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1336763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1336763</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 01 Aug 2007 18:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Fri, 03 Aug 2007 11:00:33 GMT]]></title><description><![CDATA[<p>und das macht man auch so normalerweise? Klassen ohne Konstruktor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1338027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1338027</guid><dc:creator><![CDATA[gast_xy]]></dc:creator><pubDate>Fri, 03 Aug 2007 11:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to structs in structs oder doch struct in klasse? on Fri, 03 Aug 2007 11:23:02 GMT]]></title><description><![CDATA[<p>gast_xy schrieb:</p>
<blockquote>
<p>und das macht man auch so normalerweise? Klassen ohne Konstruktor?</p>
</blockquote>
<p>Neee, das hast Du mißverstanden: Klassen haben immer einen Konstruktor (egal, ob man sie mittels &quot;class&quot; oder mittels &quot;struct&quot; definiert) - aber der Compiler stellt automatisch einen Default- einen Copy-Konstruktor und einen operator=() zur Verfügung, wenn er keine selbstdefinierten findet (Achtung: Sobald er EINEN selbstdefinierten Konstruktor mit Argumenten findet, legt er keinen DefaultCTor mehr automatisch an).</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">struct A0 { // keine selbstdefinierten CToren
};

struct A1 { // selbstdefinierter DefCTor
   A1() {}
};

struct A2 { // selbstdefinierter CopyCTor
   A2(const A2&amp;) {}
};

struct A3 { // selbstdefinierter parametrisierter CTor
   A3(int) {}
};

template &lt;typename A&gt; // Bin faul, deswegen als Funktionstemplate
void checkCTors() {
   A a;    // Default-Konstruktion
   A b(a); // Copy-Konstruktion
   b = a;   // Zuweisung
}  

int main (int argc, char **argv)
{
   checkCTors&lt;A0&gt;();   // OK
   checkCTors&lt;A1&gt;();   // OK
   checkCTors&lt;A2&gt;();   // Fehler: Kein DefaultKonstruktor 
   checkCTors&lt;A3&gt;();   // Fehler: Kein DefaultKonstruktor
   return 0;
}
</code></pre>
<p>... und da die compilergenerierten Konstruktoren &quot;Standardverhalten&quot; zeigen, reicht das üblicherweise aus.</p>
<p>Sowas Ähnliches das hast Du übrigens bestimmt schonalk genutzt, ohne es zu wissen: Der Compiler reichert auch automatisch die Initialisierungsliste von Konstruktoren an. So macht er aus</p>
<pre><code class="language-cpp">struct A : public B {
   A() { cout &lt;&lt; &quot;Alles klar&quot;; }
   string s;
};
</code></pre>
<p>automatisch:</p>
<pre><code class="language-cpp">struct A : public B {
   A() 
      : B(), // Defaultkonstruktor des Basisklasse
        s()  // Defaultkonstruktor des Elements
   { cout &lt;&lt; &quot;Alles klar&quot;; }
   string s;
};
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1338041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1338041</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 03 Aug 2007 11:23:02 GMT</pubDate></item></channel></rss>