<?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[Frage zur Komposition in C++]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Ich wollte heute mal mit so einem beispielhaften C++Programm versuchen, eine Komposition nach zu bauen. Leider gelingt es mir nicht so richtig, auch wenn der Compiler mir es kompiliert. Ich hab hier mal die Klassen reinkopiert:</p>
<pre><code class="language-cpp">#ifndef CLASSA_H
#define CLASSA_H

class classA
{
private:
	int A;

public:
	classA();
	~classA();

	void textA();
};

#endif CLASSA_H
</code></pre>
<pre><code class="language-cpp">#ifndef CLASSB_H
#define CLASSB_H

class classB
{
private:
	classA A;

public:
	classB();
	~classB();

	void textB();
};

#endif CLASSB_H
</code></pre>
<pre><code class="language-cpp">#ifndef CLASSC_H
#define CLASSC_H

class classC
{
private:
	classB B;

public:
	classC();
	~classC();

	void textC();
};

#endif CLASSC_H
</code></pre>
<p>Hier noch symbolisch die Implementierung einer Klasse; die anderen übrigen Klassen folgen dem gleichen Schema:</p>
<pre><code class="language-cpp">#include&quot;classA.h&quot;
#include&lt;iostream&gt;

classA::classA()
{

}

classA::~classA()
{

}

void classA::textA()
{
	std::cout &lt;&lt; &quot;Wir sind in classA!&quot; &lt;&lt; std::endl;
}
</code></pre>
<p>Wie man sehen kann, hab ich alle Klassen in getrennten Dateien implementiert. Ich hab nun das Programm aus einer main herausgestartet und dabei erwartet, dass mit der Deklaration von &quot;classA myClass&quot; und &quot;myClass.text...&quot; auf alle Methoden zugreifen kann, was aber nicht funktioniert. Laut UML hat ein Gebäude ein oder mehrere Zimmer. Wobei das Gebäude nach zerstörung des Zimmers nicht existieren kann, wodurch zwingend folgt, dass für ein Gebäude ein Zimmer verfügbar sein muss...</p>
<p>Könnt ihr mir da ein bisschen weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305345/frage-zur-komposition-in-c</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 01:15:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305345.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Jun 2012 18:37:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur Komposition in C++ on Tue, 26 Jun 2012 18:37:48 GMT]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Ich wollte heute mal mit so einem beispielhaften C++Programm versuchen, eine Komposition nach zu bauen. Leider gelingt es mir nicht so richtig, auch wenn der Compiler mir es kompiliert. Ich hab hier mal die Klassen reinkopiert:</p>
<pre><code class="language-cpp">#ifndef CLASSA_H
#define CLASSA_H

class classA
{
private:
	int A;

public:
	classA();
	~classA();

	void textA();
};

#endif CLASSA_H
</code></pre>
<pre><code class="language-cpp">#ifndef CLASSB_H
#define CLASSB_H

class classB
{
private:
	classA A;

public:
	classB();
	~classB();

	void textB();
};

#endif CLASSB_H
</code></pre>
<pre><code class="language-cpp">#ifndef CLASSC_H
#define CLASSC_H

class classC
{
private:
	classB B;

public:
	classC();
	~classC();

	void textC();
};

#endif CLASSC_H
</code></pre>
<p>Hier noch symbolisch die Implementierung einer Klasse; die anderen übrigen Klassen folgen dem gleichen Schema:</p>
<pre><code class="language-cpp">#include&quot;classA.h&quot;
#include&lt;iostream&gt;

classA::classA()
{

}

classA::~classA()
{

}

void classA::textA()
{
	std::cout &lt;&lt; &quot;Wir sind in classA!&quot; &lt;&lt; std::endl;
}
</code></pre>
<p>Wie man sehen kann, hab ich alle Klassen in getrennten Dateien implementiert. Ich hab nun das Programm aus einer main herausgestartet und dabei erwartet, dass mit der Deklaration von &quot;classA myClass&quot; und &quot;myClass.text...&quot; auf alle Methoden zugreifen kann, was aber nicht funktioniert. Laut UML hat ein Gebäude ein oder mehrere Zimmer. Wobei das Gebäude nach zerstörung des Zimmers nicht existieren kann, wodurch zwingend folgt, dass für ein Gebäude ein Zimmer verfügbar sein muss...</p>
<p>Könnt ihr mir da ein bisschen weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227495</guid><dc:creator><![CDATA[vip*r]]></dc:creator><pubDate>Tue, 26 Jun 2012 18:37:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Komposition in C++ on Tue, 26 Jun 2012 18:49:05 GMT]]></title><description><![CDATA[<p>vip@r schrieb:</p>
<blockquote>
<p>...was aber nicht funktioniert...</p>
</blockquote>
<p>Fällt dir was auf? Kleiner Tipp: es fehlt eie Information...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227496</guid><dc:creator><![CDATA[Informator]]></dc:creator><pubDate>Tue, 26 Jun 2012 18:49:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Komposition in C++ on Tue, 26 Jun 2012 18:50:33 GMT]]></title><description><![CDATA[<p>Oh, entschuldigt bitte, das passiert immer wieder. Hier noch die Compiler-Meldung:</p>
<pre><code>Fehler	1	error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'A'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2227498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227498</guid><dc:creator><![CDATA[vip*r]]></dc:creator><pubDate>Tue, 26 Jun 2012 18:50:33 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Komposition in C++ on Tue, 26 Jun 2012 19:01:35 GMT]]></title><description><![CDATA[<p>Und wie sieht die Zeile aus, in der der Fehler auftritt (am besten den ganzen Code posten, reduziert auf das Wesentliche).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227502</guid><dc:creator><![CDATA[Mainer]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Komposition in C++ on Tue, 26 Jun 2012 19:04:17 GMT]]></title><description><![CDATA[<p>Der sehr reduzierte Code sieht so aus:</p>
<pre><code class="language-cpp">class classB
{
private:
	classA A;

public:
	classB();
	~classB();

	void textB();
};
</code></pre>
<p>Der Fehler ist hier dann in Zeile 4. Hier stände laut compiler kein ;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227503</guid><dc:creator><![CDATA[vip*r]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Komposition in C++ on Tue, 26 Jun 2012 19:19:23 GMT]]></title><description><![CDATA[<p>Das Problem ist, dass in Klasse classB die Klasse classA nicht bekannt ist. Versuch es mal mit einer Vorwärtsdeklaration:</p>
<pre><code class="language-cpp">class classA;

class classB
{
private:
    classA A;

public:
    classB();
    ~classB();

    void textB();
};
</code></pre>
<p>(ungetestet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227508</guid><dc:creator><![CDATA[Bekanntmacher]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:19:23 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Komposition in C++ on Tue, 26 Jun 2012 19:36:59 GMT]]></title><description><![CDATA[<p>Leider führt das so nicht zum gewünschten Erfolg. Compiler-Error: Fehler 1 error C2079: 'classB::A' verwendet undefiniertes class 'classA'</p>
<p>Ich hab mir zum ausgegebenen Fehler, mal die FAQ von VisualStudio durchgelesen, und die empfehlen das hier:</p>
<pre><code class="language-cpp">class classB
{
private:
	classA* A;

public:
	classB();
	~classB();

	void textB();
};
</code></pre>
<p>Man beachte wieder Zeile 4. Hier solle man einen pointer deklarieren. Wenn ich nun in der Implementierungsdatei zur Klasse classB die Funktion textA() aufrufen will, muss ich dementsprechend mit &quot;-&gt;&quot;-Operator arbeiten.</p>
<p>Irgendwie kapiere ich das nicht. Wenn ich nämlich die 3 unterschiedlichen Klassen in eine einzige Klassendatei (Deklaration der Klasse sowie Implementierung der Methoden!) schreibe, dann funktioniert das Ganze ohne der Pointer...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227510</guid><dc:creator><![CDATA[vip*r]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Komposition in C++ on Tue, 26 Jun 2012 19:34:55 GMT]]></title><description><![CDATA[<p>Entschuldige. Wenn du Objekte vom Typ classA in classB verwenden willst, musst du in der classB.h den Header classA.h inkludieren, da hier eine Vorwärtsdeklaration nicht ausreicht. Anders wäre das bei Pointern oder Referenzen auf classA:</p>
<pre><code class="language-cpp">class classA;

class classB
{
    private:
        classA* A1; // geht
        classA&amp; A2; // geht
        classA A3; // geht nicht

    public:
        classB();
        ~classB();

        void textB();
};
</code></pre>
<p>Mit #include:</p>
<pre><code class="language-cpp">#include &quot;A.h&quot;

class classB
{
    private:
        classA A3; // geht, da A.h inkludiert wird

    public:
        classB();
        ~classB();

        void textB();
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2227515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227515</guid><dc:creator><![CDATA[Entschuldiger]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:34:55 GMT</pubDate></item></channel></rss>