<?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[struct als Member einer Klasse]]></title><description><![CDATA[<p>Nabend zusammen,</p>
<p>ich stehe mal wieder vor einem Problem: Es geht darum Variablen einer Klasse als struct zusammenzufassen. Versucht habe ich das etwa so:</p>
<p>Klassendeklaration</p>
<pre><code class="language-cpp">class Klasse
{

public:

 Klasse();//Konstruktor

 struct Data
 {
  int v1;
  int v2;
  //usw
 };

};
</code></pre>
<p>Implementation:</p>
<pre><code class="language-cpp">Klasse::Klasse()
{
Data d; //Neues Strukturfeld anlegen

d.v1 = 5; //Daten reinpacken

};
</code></pre>
<p>Versucht zu benutzen hab ich das ganze dann so:</p>
<pre><code class="language-cpp">//...

Klasse Instanz01; //Neue Instanz von 'Klasse' anlegen

cout &lt;&lt; Instanz01.d.v1; //Wert von v1 ausgeben

//...
</code></pre>
<p>Der Fehler den ich erhalte ist folgender:<br />
'class Klasse' has no member named 'd'</p>
<p>Ich code mit Code::Blocks, der Compiler ist GCC/MinGW</p>
<p>Vielleicht weiß ja jemand woran das liegt und kann einen Tipp geben...<br />
Vielen Dank und einen schönen Abend,</p>
<p>PixelRealm</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223333/struct-als-member-einer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 22:08:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223333.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Sep 2008 20:11:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to struct als Member einer Klasse on Wed, 24 Sep 2008 20:12:41 GMT]]></title><description><![CDATA[<p>Nabend zusammen,</p>
<p>ich stehe mal wieder vor einem Problem: Es geht darum Variablen einer Klasse als struct zusammenzufassen. Versucht habe ich das etwa so:</p>
<p>Klassendeklaration</p>
<pre><code class="language-cpp">class Klasse
{

public:

 Klasse();//Konstruktor

 struct Data
 {
  int v1;
  int v2;
  //usw
 };

};
</code></pre>
<p>Implementation:</p>
<pre><code class="language-cpp">Klasse::Klasse()
{
Data d; //Neues Strukturfeld anlegen

d.v1 = 5; //Daten reinpacken

};
</code></pre>
<p>Versucht zu benutzen hab ich das ganze dann so:</p>
<pre><code class="language-cpp">//...

Klasse Instanz01; //Neue Instanz von 'Klasse' anlegen

cout &lt;&lt; Instanz01.d.v1; //Wert von v1 ausgeben

//...
</code></pre>
<p>Der Fehler den ich erhalte ist folgender:<br />
'class Klasse' has no member named 'd'</p>
<p>Ich code mit Code::Blocks, der Compiler ist GCC/MinGW</p>
<p>Vielleicht weiß ja jemand woran das liegt und kann einen Tipp geben...<br />
Vielen Dank und einen schönen Abend,</p>
<p>PixelRealm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587553</guid><dc:creator><![CDATA[PixelRealm]]></dc:creator><pubDate>Wed, 24 Sep 2008 20:12:41 GMT</pubDate></item><item><title><![CDATA[Reply to struct als Member einer Klasse on Wed, 24 Sep 2008 20:18:25 GMT]]></title><description><![CDATA[<p>wie der kompiler schon sagt:<br />
die klasse hat kein member namens d.</p>
<p>Das was du da im Konstruktor angelegt hast ist eine automatische (auf dem stack) Variable, die beim Verlassen des Konstruktors ihre Gültigkeit verliert.</p>
<p>Wenn deine Klasse ein member d haben soll, musst du das auch da deklarieren.</p>
<pre><code class="language-cpp">class Klasse
{

public:

 Klasse();//Konstruktor

 struct Data
 {
  int v1;
  int v2;
  //usw
 };

 Data d;

};
</code></pre>
<p>Edit:<br />
eigendlich sollte hier ein compiler sogar warnen, da du im konstruktor eine Variable definierst, die gar nicht ausgelesen wird.<br />
Überprüfe mal das warning level deines compilers</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587557</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Wed, 24 Sep 2008 20:18:25 GMT</pubDate></item><item><title><![CDATA[Reply to struct als Member einer Klasse on Wed, 24 Sep 2008 20:20:21 GMT]]></title><description><![CDATA[<p>PixelRealm schrieb:</p>
<blockquote>
<p>ich stehe mal wieder vor einem Problem: Es geht darum Variablen einer Klasse als struct zusammenzufassen. Versucht habe ich das etwa so:</p>
</blockquote>
<p>Du solltest dich nochmal mit dem Thema Scope auseinander setzen. Wenn du etwas Objektweit verwenden willst, musst du dies auch in der Klassendeklaration angeben:</p>
<p>Klassendeklaration</p>
<pre><code class="language-cpp">class Klasse
{
    //...
    // Anmerkung: Datenkapselung wäre auch mal ein sinnvolles Thema ;)
    Data d; // Membervariable: Gilt für die Instanz der Klasse
};
</code></pre>
<p>Implementation:</p>
<pre><code class="language-cpp">Klasse::Klasse()
{
  // Data d; &lt;--- Dies wäre eine lokale Variable, sprich nur in dieser
  //              Methode gültig

  d.v1 = 5; // Besser wäre es in dem Fall der Struktur einen Konstruktor zu
            // geben und die Initialisierungsliste des Konstruktors zu
            // verwenden...
};
</code></pre>
<p>Nun würde der Zugriff auch klappen (Wenn gleich mit Verstoß gegen das Geheimhaltungsprinzip [Datenkapselung]).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587559</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 24 Sep 2008 20:20:21 GMT</pubDate></item><item><title><![CDATA[Reply to struct als Member einer Klasse on Wed, 24 Sep 2008 20:22:04 GMT]]></title><description><![CDATA[<p>Du deklarierst nur eine Klasse (Struktur) innerhalb deiner Klasse, legst aber keine Membervariable dieser inneren Klasse an. Stattdessen erzeugst du im Konstruktor eine lokale Variable, die eine Instanz der inneren Klasse ist. Wie gesagt scheinst du aber eine Membervariable haben zu wollen, also sowas:</p>
<pre><code class="language-cpp">class Klasse 
{ 

public: 

 Klasse();//Konstruktor 

 struct Data 
 { 
  int v1; 
  int v2; 
  //usw 
 }; 
 //NEU:
 Data d;

};
</code></pre>
<p>Der Konstruktor sieht dann zum Beispiel so aus (besser wäre es natürlich, einen Konstruktor für Data zu schreiben und den dann mit einer Initialisierungsliste zu verwenden):</p>
<pre><code class="language-cpp">Klasse::Klasse()
{
d.v1 = 5; //Daten reinpacken
};
</code></pre>
<p>EDIT: Zu spät, wurde alles (und noch viel mehr) schon gesagt <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>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587561</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Wed, 24 Sep 2008 20:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to struct als Member einer Klasse on Wed, 24 Sep 2008 22:34:18 GMT]]></title><description><![CDATA[<p>nur eine kleine anmerkung zur terminologie: worum es hier geht sind klassen<strong>definitionen</strong>, nicht klassendeklarationen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587598</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 24 Sep 2008 22:34:18 GMT</pubDate></item><item><title><![CDATA[Reply to struct als Member einer Klasse on Thu, 25 Sep 2008 06:23:15 GMT]]></title><description><![CDATA[<p>Oh, stimmt... Normalerweise hätte mir das auch auffallen müssen, statt dessen habe ich es sogar selbst falsch gemacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587636</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Thu, 25 Sep 2008 06:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to struct als Member einer Klasse on Fri, 26 Sep 2008 09:13:36 GMT]]></title><description><![CDATA[<p>ansich logisch was ihr sagt... <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>Jetzt klappt alles, vielen Dank!</p>
<p>Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588335</guid><dc:creator><![CDATA[PixelRealm]]></dc:creator><pubDate>Fri, 26 Sep 2008 09:13:36 GMT</pubDate></item></channel></rss>