<?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[Klasse beinhaltet Objekte einer anderen Klasse, wie?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich soll für eine Übung ein Programm schreiben, das folgende Punkte erfüllt:</p>
<p>● Führen Sie eine Klasse KompRat für „komplexe rationale Zahlen“ ein, die<br />
für Real- und Imaginär-Teil jeweils die Klasse Bruch als Bestandteile<br />
beinhaltet (Aggregation).<br />
● Bauen Sie die entsprechenden Konstruktoren (Konstruktoren-Aufrufe<br />
kaskadieren).<br />
● Schreiben Sie für die Klasse KompRat ebenfalls Operator-Funktionen für<br />
die 4 Grundrechenarten.<br />
● Beachten Sie auch bei der Klasse KompRat stets die Vermeidung der<br />
Division durch Null.<br />
● Implementieren Sie Vergleichsoperatoren &gt; und &lt; für „komplexe<br />
rationale Zahlen“. Zur Feststellung der „Größe“ einer solchen Zahl<br />
bilden Sie die Summe aus Real- und Imaginärteil (ist mathematisch<br />
wenig sinnvoll aber als Übung gut geeignet). Arbeiten Sie dabei mit<br />
Referenzen auf die Objekte.<br />
● Ergänzen Sie zur Typumwandlung Cast-Funktionen (z.B. über<br />
Typumwandlungs-Konstruktoren) von der Klasse KompRat zur Klasse<br />
Bruch und umgekehrt. Bei der Verwandlung  zum Bruch wird der<br />
Imaginär-Teil verworfen. Bei der Verwandlung zur „komplexen rationalen<br />
Zahl“ wird der Imaginärteil auf Null initialisiert.</p>
<p>ich scheitere leider schon beim ersten Teil...<br />
Als Buch habe ich c++ ent-packt von Herbert Schildt, in diesem finde ich leider nichts zu &quot;Aggregation&quot;, auch google hat sich bisher als wenig hilfreich erwiesen, leider.</p>
<p>Ich habe bisher folgende Klasse:</p>
<pre><code class="language-cpp">class bruch {
private:
   int zaehler, nenner;
public:
    bruch (int z,int n) {set (z, n);}
    bruch (int zaehler) { int nenner=1; set(nenner, zaehler);}
    ~bruch (){/*cout &lt;&lt; &quot;Destructing bruch &quot; &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl;*/}

    void display( ) {   cout &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl; }
    void set (int r, int i) { zaehler = r; nenner = i; }
};
</code></pre>
<p>Wir sollen nun das Programm (es war etwas länger, es ging um überladen von ++ bzw. -- für brüche und integer) so erweitern, das wir eine neue Klasse komrad einfügen, die als Variablen 2x bruch aufweisen.</p>
<p>Ich hatte mir das so vorgestellt... iss natürlich falsch, aber zum illustrieren des Gedanken sollte es reichen <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">#include &lt;iostream&gt;
using namespace std;

class bruch {
private:
   int zaehler, nenner;
public:
    bruch (int z,int n) {set (z, n);}
    bruch (int zaehler) { int nenner=1; set(nenner, zaehler);}
    ~bruch (){/*cout &lt;&lt; &quot;Destructing bruch &quot; &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl;*/}

    void display( ) {   cout &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl; }
    void set (int r, int i) { zaehler = r; nenner = i; }
};

class komrad {
private:
    bruch re, im;
public:
    komrad (int zre, int nre, int zim, int nim) { komrad::re(zre, nre); komrad::im(zim, nim);}
    ~komrad(){}

    void display (){ cout &lt;&lt; &quot;test&quot;; }
};

void main ()
{
    komrad c1 = new komrad (1, 2, 3, 4);
}
</code></pre>
<p>Beschwerden bringt der Compiler erst in Zeile 21, aber da ich keine Ahnung habe ob das was ich da treibe überhaupt funktioniert, brauch ich euch dabei <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>
<p>wie könnte das ausschauen? <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>
<p>Danke für eure Hilfe im vor-raus (ihh, wieso wird das zensiert?),<br />
Lanfear</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229209/klasse-beinhaltet-objekte-einer-anderen-klasse-wie</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 02:04:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229209.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Dec 2008 22:01:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Mon, 08 Dec 2008 22:01:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich soll für eine Übung ein Programm schreiben, das folgende Punkte erfüllt:</p>
<p>● Führen Sie eine Klasse KompRat für „komplexe rationale Zahlen“ ein, die<br />
für Real- und Imaginär-Teil jeweils die Klasse Bruch als Bestandteile<br />
beinhaltet (Aggregation).<br />
● Bauen Sie die entsprechenden Konstruktoren (Konstruktoren-Aufrufe<br />
kaskadieren).<br />
● Schreiben Sie für die Klasse KompRat ebenfalls Operator-Funktionen für<br />
die 4 Grundrechenarten.<br />
● Beachten Sie auch bei der Klasse KompRat stets die Vermeidung der<br />
Division durch Null.<br />
● Implementieren Sie Vergleichsoperatoren &gt; und &lt; für „komplexe<br />
rationale Zahlen“. Zur Feststellung der „Größe“ einer solchen Zahl<br />
bilden Sie die Summe aus Real- und Imaginärteil (ist mathematisch<br />
wenig sinnvoll aber als Übung gut geeignet). Arbeiten Sie dabei mit<br />
Referenzen auf die Objekte.<br />
● Ergänzen Sie zur Typumwandlung Cast-Funktionen (z.B. über<br />
Typumwandlungs-Konstruktoren) von der Klasse KompRat zur Klasse<br />
Bruch und umgekehrt. Bei der Verwandlung  zum Bruch wird der<br />
Imaginär-Teil verworfen. Bei der Verwandlung zur „komplexen rationalen<br />
Zahl“ wird der Imaginärteil auf Null initialisiert.</p>
<p>ich scheitere leider schon beim ersten Teil...<br />
Als Buch habe ich c++ ent-packt von Herbert Schildt, in diesem finde ich leider nichts zu &quot;Aggregation&quot;, auch google hat sich bisher als wenig hilfreich erwiesen, leider.</p>
<p>Ich habe bisher folgende Klasse:</p>
<pre><code class="language-cpp">class bruch {
private:
   int zaehler, nenner;
public:
    bruch (int z,int n) {set (z, n);}
    bruch (int zaehler) { int nenner=1; set(nenner, zaehler);}
    ~bruch (){/*cout &lt;&lt; &quot;Destructing bruch &quot; &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl;*/}

    void display( ) {   cout &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl; }
    void set (int r, int i) { zaehler = r; nenner = i; }
};
</code></pre>
<p>Wir sollen nun das Programm (es war etwas länger, es ging um überladen von ++ bzw. -- für brüche und integer) so erweitern, das wir eine neue Klasse komrad einfügen, die als Variablen 2x bruch aufweisen.</p>
<p>Ich hatte mir das so vorgestellt... iss natürlich falsch, aber zum illustrieren des Gedanken sollte es reichen <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">#include &lt;iostream&gt;
using namespace std;

class bruch {
private:
   int zaehler, nenner;
public:
    bruch (int z,int n) {set (z, n);}
    bruch (int zaehler) { int nenner=1; set(nenner, zaehler);}
    ~bruch (){/*cout &lt;&lt; &quot;Destructing bruch &quot; &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl;*/}

    void display( ) {   cout &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl; }
    void set (int r, int i) { zaehler = r; nenner = i; }
};

class komrad {
private:
    bruch re, im;
public:
    komrad (int zre, int nre, int zim, int nim) { komrad::re(zre, nre); komrad::im(zim, nim);}
    ~komrad(){}

    void display (){ cout &lt;&lt; &quot;test&quot;; }
};

void main ()
{
    komrad c1 = new komrad (1, 2, 3, 4);
}
</code></pre>
<p>Beschwerden bringt der Compiler erst in Zeile 21, aber da ich keine Ahnung habe ob das was ich da treibe überhaupt funktioniert, brauch ich euch dabei <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>
<p>wie könnte das ausschauen? <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>
<p>Danke für eure Hilfe im vor-raus (ihh, wieso wird das zensiert?),<br />
Lanfear</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627331</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Mon, 08 Dec 2008 22:01:49 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Mon, 08 Dec 2008 22:24:58 GMT]]></title><description><![CDATA[<p>Am besten siehst du dir noch mal an, wie das mit den Intialisierungslisten war. Sonst sehe ich auf die Schnelle keine Probleme.</p>
<pre><code class="language-cpp">komrad (int zre, int nre, int zim, int nim) : re(zre, nre), im(zim, nim) {} //so ist's richtig
</code></pre>
<p>Und es wird zensiert, weil es &quot;voraus&quot; heisst.</p>
<p>Edit:</p>
<pre><code class="language-cpp">void main () //laut Standard ist nur int main() korrekt
{
    //komrad* c1 = new komrad (1, 2, 3, 4); //entweder so
    komrad c1 (1, 2, 3, 4); //oder so (hast du vorher mit Java gearbeitet?)
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1627339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627339</guid><dc:creator><![CDATA[Nanyuki]]></dc:creator><pubDate>Mon, 08 Dec 2008 22:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Mon, 08 Dec 2008 22:22:27 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">komrad (int zre, int nre, int zim, int nim) { komrad::re(zre, nre); komrad::im(zim, nim);}
</code></pre>
</blockquote>
<p>was willst du hier machen? (mal davon abgesehen, dass es KompRat heißen sollte)</p>
<pre><code class="language-cpp">KompRat (int zre, int nre, int zim, int nim) : re (zre, nre), im (zim, nim) {}
</code></pre>
<p>Allerdings sollte man dem CTor vll besser die beiden Brüche direkt übergeben...</p>
<p>Den Rest musst du allein machen - sind ja schließlich auch deine Aufgaben ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627341</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 08 Dec 2008 22:22:27 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Tue, 09 Dec 2008 08:13:39 GMT]]></title><description><![CDATA[<p>heya, danke für eure Hilfe <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>ob die funktion jetzt komrad oder KompRad heißt iss meinem Prof net wirklich wichtig.</p>
<p>Initialisierungslisten? nie gehört, mein Buch gibt dazu auch nix her (im index net zu finden <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>
<pre><code class="language-cpp">komrad (int zre, int nre, int zim, int nim) { komrad::re(zre, nre); komrad::im(zim, nim);}
</code></pre>
<p>Der Sinn war, das den Objekten re und im die Zahlen übergeben werden, ich hoffte das er dann den entsprechenden Konstruktor aufruft. So wie ihr es geschrieben habt kenne ich es von der Vererbung, das man an die Klasse von der man erbt Variablen übergeben kann. Da es aber hier keine Vererbung gibt bin ich net auf die Idee gekommen das es so auch gehen tät <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>
<p>Ein Problem, das ich jetzt noch habe iss, das ich net weiß wie ich auf die Elemente meiner &quot;Unterklassen&quot; zugreifen kann.</p>
<p>Wenn ich mit komrad c1 (1,2,3,4) das Objekt erstelle, wie komme ich dann an zaehler und nenner ran? Mit c1::re bzw. c1::im sollte ich zwar an die Objekte re und im, sowie die Funktion display kommen (was komischerweise auch net funktioniert...), aber net an die Variablen, liegt das daran das sie private sind? Sprich brauche ich ne public-funktion mit der ich die Variablen zurückgeben kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627445</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Tue, 09 Dec 2008 08:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Tue, 09 Dec 2008 08:14:19 GMT]]></title><description><![CDATA[<blockquote>
<p>Sprich brauche ich ne public-funktion mit der ich die Variablen zurückgeben kann?</p>
</blockquote>
<p>Genau - nennt sich Getter</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627454</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 09 Dec 2008 08:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Tue, 09 Dec 2008 08:22:13 GMT]]></title><description><![CDATA[<p>ich bin so blöd... kaum Programmiere ich mal ne Woche net, vergess ich alles was ich beim letzten mal noch wusste...</p>
<p>net c1::display, sondern c1.display <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>danke unskilled <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1627457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627457</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Tue, 09 Dec 2008 08:22:13 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Tue, 09 Dec 2008 09:30:03 GMT]]></title><description><![CDATA[<p>Lanfear schrieb:</p>
<blockquote>
<p>Initialisierungslisten? nie gehört, mein Buch gibt dazu auch nix her (im index net zu finden <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>
</blockquote>
<p>Initialisierungslisten sind eigentlich der Weg wie man in C++ Klassen initialisieren sollte. Aber dazu gleich noch etwas mehr...</p>
<p>Lanfear schrieb:</p>
<blockquote>
<pre><code class="language-cpp">komrad (int zre, int nre, int zim, int nim) { komrad::re(zre, nre); komrad::im(zim, nim);}
</code></pre>
<p>Der Sinn war, das den Objekten re und im die Zahlen übergeben werden, ich hoffte das er dann den entsprechenden Konstruktor aufruft.</p>
</blockquote>
<p>Innerhalb der Methoden der Klasse sind die Membervariablen bekannt. Sprich, dort ist nichts vor den Bezeichner zu setzen, es sei den bei Namenskonflikten, dann wird aber über den this-&gt; Zeiger zugegriffen, nicht über den Klassennamen.</p>
<p>Lanfear schrieb:</p>
<blockquote>
<p>Ein Problem, das ich jetzt noch habe iss, das ich net weiß wie ich auf die Elemente meiner &quot;Unterklassen&quot; zugreifen kann.</p>
</blockquote>
<p>Lass den Begriff Unterklasse hier lieber weg, ebenso wie Vererbung. Den hier wird keine Vererbung verwendet.</p>
<p>So... nun aber nochmal genauer:</p>
<pre><code class="language-cpp">//...
// Kleine Bitte: gewöhn dir Abkürzungen ab. Sonst verstehst du deinen
// eigenen Code später nicht mehr. Mit komrad würde ich auf Anhieb nichts
// anfangen ebenso wie mit re und im, es sei den irgendwer liefert eine
// Beschreibung mit. Außer deiner Schreibfaulheit ist hier niemanden
// geholfen... Lesbarer Code verringert den Dokumentierungsbedarf und fördert
// die Wartbarkeit.
class komrad
{
private:
    bruch re, im;
public:
    komrad(int zre, int nre, int zim, int nim);
    //...
</code></pre>
<p>Es gibt nun zwei Varianten den Konstruktor umzusetzen. Die erste Variante ist suboptimal (Ich verwende in beiden Fällen die Schreibweise wie man die Methode bei trennung von Deklaration [.h] und Definition [.cpp] schreiben würde):</p>
<pre><code class="language-cpp">komrad::komrad(int zre, int nre, int zim, int nim)
{   // 1. Hier ist bereits die Initialisierung passiert!
    //    Hier kannst du daher nicht mehr initialisieren sondern nur zuweisen!
    // 2. Zugriff über den Membernamen...
    re = bruch(zre, nre);
    // 3. Du kannst auch über den this-&gt; Zeiger gehen...
    this-&gt;im = bruch(zim, nim);
}
</code></pre>
<p>Besser:</p>
<pre><code class="language-cpp">komrad::komrad(int zre, int nre, int zim, int nim)
:   re(zre, nre), // Hier erfolgt tatsächlich eine Initialisierung
    im(zim, nim)
{ //&lt;&gt; Name der Membervariablen
  //   &lt;------&gt; Initialisierungswert
  // Achtung: Die gleiche Reihenfolge wie in der Memberdeklaration verwenden,
  //          um nicht unschöne Seiteneffekte bei gegenseitigen Abhängigkeiten
  //          zu erhalten
}
</code></pre>
<p>Diese Schreibweise hat folgende Vorteile:<br />
a) Auch Konstanten und Referenzen lassen sich so initialisieren<br />
b) Es erfolgt eine Initialisierung (Nicht wie im ersten Beispiel eine initialisierung mit dem Standardkonstruktor, und einer anschließenden Zuweisung).<br />
c) Über die Initialisierungsliste lassen sich auch andere Konstruktoren als der Standardkonstruktor von Basisklassen (im Falle der hier nicht vorliegenden Ableitung) verwenden.</p>
<p>Vielleicht hier noch etwas zur Begrifflichkeit:</p>
<pre><code class="language-cpp">class A : public B {}; // Vererbung, &quot;A ist ein B&quot;, A leitet von B ab
class C
{
  private:
    D d; // Komposition, &quot;C enthält/hat ein D&quot;
};
</code></pre>
<p>So... nun erhöhen wir den Schwierigkeitsgrad ein wenig. Nehmen wir an deine Klasse bekommt noch einen Konstruktor, der direkt mit zwei Brüchen arbeitet. Und zudem nennen wir die Parameter noch genau so, wie die Membervariablen...</p>
<pre><code class="language-cpp">class komrad
{
//...
public:
    komrad(int zre, int nre, int zim, int nim);
    komrad(bruch const &amp; re, bruch const &amp; im);
    //...
</code></pre>
<p>Wie müssen wir nun vorgehen?</p>
<pre><code class="language-cpp">// Variante 1: Mittels nachträglicher Zuweisung.
komrad::komrad(bruch const &amp; re, bruch const &amp; im)
{
    // Nun ist der this-&gt; Zeiger zwingend zu verwenden...
    this-&gt;re = re;
    this-&gt;im = im;
  //&lt;------&gt; Zugriff auf Member
  //           &lt;&gt; Zugriff auf Parameter
}

// Variante 2: Mittels Initialisierungsliste
komrad::komrad(bruch const &amp; re, bruch const &amp; im)
:   re(re), // Aufruf des Kopierkonstruktors...
    im(im)
{ //&lt;&gt; Name der Membervariablen (Kein this!)
  //   &lt;&gt; Name des Parameters
}
</code></pre>
<p>Nur als ergänzung:<br />
bruch const &amp; re<br />
ist identisch mit<br />
const bruch &amp; re</p>
<p>Und bedeutet, das du eine konstante Referenz (einen Aliasnamen) übergibst. Im Gegensatz zu der Schreibweise ohne &quot;const &amp;&quot; vermeide ich hier eine unnötige Objektkopie.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627498</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 09 Dec 2008 09:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 11:29:40 GMT]]></title><description><![CDATA[<p>Hallo <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>
<p>vielen Dank für die Erklärungen, asc <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="🙂"
    /><br />
Ich muss sagen, aber wirklich sicher das ich alles verstanden hab bin ich net ^^<br />
Aber, das stelle ich erstmal hinten an.</p>
<p>funktionieren tut es aber... ^^</p>
<pre><code class="language-cpp">komrad (bruch const &amp; kre, bruch const &amp; kim) : re (kre), im(kim) {} 
    komrad (bruch const &amp; kre) :re (kre), im(0,0) {}

    // ...  bissle mehr geschreibsel, in der main steht dann:

    komrad brueche_uebergeben=komrad(b1, b2);
    brueche_uebergeben.display();
    cout &lt;&lt; endl &lt;&lt; &quot;_____________________________________&quot; &lt;&lt; endl;
    komrad bruch_uebergeben=komrad(b3);
    bruch_uebergeben.display();
    cout &lt;&lt; endl &lt;&lt; &quot;_____________________________________&quot; &lt;&lt; endl;
</code></pre>
<p>Ausgabe: 1/2+3/4i bzw. 4/4+0/0i <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>Das gleiche habe ich inzwischen auch für die Klasse bruch verwirklicht, dieser kann ich nun einfach ein Objekt der Klasse bruch übergeben:</p>
<pre><code class="language-cpp">bruch (const bruch&amp; a) {zaehler=a.zaehler; nenner=a.nenner;}

    // in der main:

    b1.displaybruch();
    b2.displaybruch();

    b1=b2;
    b1.displaybruch();
    b2.displaybruch();
</code></pre>
<p>Ausgabe: b1: 1/2 b2: 3/4 -- b1: 3/4 b2: 3/4</p>
<p>soweit ok.<br />
mein nächstes Problem ist, das ich in der Klasse bruch einen Konstruktor bauen will, dem ich ein Objekt der Klasse komrad übergeben kann, und er sich dann den Realteil herrauszieht.</p>
<p>Das hätte ich auf 2 Arten lösen wollen... (ka welcher funktioniert ^^)</p>
<pre><code class="language-cpp">bruch (komrad blubb) 
    {
        int hilfszaehler=0, hilfsnenner=0;
        hilfszaehler=blubb.get_rezaehler();
        hilfsnenner=blubb.get_renenner();
        set(hilfszaehler, hilfsnenner);    
    }
</code></pre>
<p>oder ... halt mit dem kopierkonstruktor irgendwie...</p>
<pre><code class="language-cpp">bruch (komrad const &amp; uebergeben)
    {
        // Nun ist der this-&gt; Zeiger zwingend zu verwenden...
        this = uebergeben.re;
        //&lt;------&gt; Zugriff auf Member
        //           &lt;&gt; Zugriff auf Parameter
    }
</code></pre>
<p>nur, ich vermute das Problem liegt darin, das die Klasse komrad erst nach der Klasse bruch definiert wird (also der Kompiler nicht weiß das es sich bei komrad um eine Klasse handelt) und daher Fehler ausspuckt.</p>
<p>Fehler 1 error C2027: Verwendung des undefinierten Typs &quot;komrad&quot;<br />
Fehler 2 error C2228: Links von &quot;.re&quot; muss sich eine Klasse/Struktur/Union befinden.</p>
<p>Ich weiß wie ich Funktionen vorstelle das der Compiler weiß das noch eine Funktion mit diesem Namen kommt, aber wie mache ich bei Codebeginn Klassen bekannt?</p>
<p>ich habs mit</p>
<pre><code class="language-cpp">class komrad;
</code></pre>
<p>versucht, aber in allen Variationen geht das net.</p>
<p>wenn ihr wollt kann ich auch mal den kompletten Code reinstellen, aber der iss etwas länger... (550 Zeilen), da sich durchwurschteln zu müssen wird net schön <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1628136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628136</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Wed, 10 Dec 2008 11:29:40 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 13:20:33 GMT]]></title><description><![CDATA[<p>*edit* falsch gelesen, sry ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628173</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 10 Dec 2008 13:20:33 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 12:34:14 GMT]]></title><description><![CDATA[<p>ähm, ich bin jetzt net sicher was du verstanden hast....</p>
<p>also ausführlich.</p>
<p>Ich habe 2 Klassen. Klasse bruch besteht ja aus dem Zähler und Nenner eines Bruchs (als int-variablen). Die Klasse komrad beinhaltet 2 Brüche, jeweils einen für den Realteil (re) und dem Imaginärteil der Zahl.</p>
<p>komrad: re+im<br />
wobei re und im jeweils objekte der Klasse bruch sind.</p>
<p>bruch: zaehler und nenner<br />
wobei diese als int drinneliegen.</p>
<p>wenn ich jetzt einem Objekt bruch ein Objekt komrad als zuweisung übergebe, dann soll den variablen zaehler und nenner der entsprechende zaehler und nenner von re (der Klasse komrad) übergeben werden/benutzt werden und der imaginärteil wegfallen.</p>
<p>bsp:</p>
<pre><code class="language-cpp">class bruch {
private:
   int zaehler, nenner;
public: // [...]

class komrad {
private:
    bruch re, im;
public: // [...]

//in der main dann:

komrad k1=komrad (1,2,3,4)
bruch b1=bruch (1,1)

b1=k1;
b1.display();

// [...]
</code></pre>
<p>so schaut es vor b1=k1; aus:</p>
<p>k1: 1/2+3/4i<br />
b1: 1/1</p>
<p>nach b1=k1 soll folgendes rauskommen:<br />
b1: 1/2<br />
(und der imaginärteil wird einfach net benutzt)</p>
<p>zumindest hab ich das so verstanden was der nette Herr von mir will:</p>
<p>● Ergänzen Sie zur Typumwandlung Cast-Funktionen (z.B. über<br />
Typumwandlungs-Konstruktoren) von der Klasse KompRat zur Klasse<br />
Bruch und umgekehrt. Bei der Verwandlung  zum Bruch wird der<br />
Imaginär-Teil verworfen. Bei der Verwandlung zur „komplexen rationalen<br />
Zahl“ wird der Imaginärteil auf Null initialisiert.</p>
<p>wenns hilft kann ich auch den ganzen Code mal posten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628186</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Wed, 10 Dec 2008 12:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 12:39:37 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<blockquote>
<p>mein nächstes Problem ist, das ich in der Klasse bruch einen Konstruktor bauen will, dem ich ein Objekt der Klasse komrad übergeben kann, und er sich dann den Realteil herrauszieht.</p>
</blockquote>
<p>Versteh ich nicht - du willst also nicht das gesamte Objekt kopieren, sondern nur den Realteil?<br />
Falls ich das richtig verstanden habe, wäre hier der Kopierkonstruktor nicht geeignet und du solltest ne eigene Funktion dafür schreiben, da der Kopierkonstruktor dazu da ist, das gesamte Objekt zu kopieren...</p>
<p>bb</p>
</blockquote>
<p>Ein Konstruktor von bruch der ein komrad als Argument nimmt hat auch nichts mit einem Kopierkonstruktor zu tun...</p>
<p>folgende Möglichkeiten gibts bei der Bruch-Klasse die du oben beschrieben hast:</p>
<pre><code class="language-cpp">bruch(komrad const&amp; kom) { set(kom.getRe().zaehler, kom.getRe().nenner); } //Variante1 mit direktem Aufruf von set
bruch(komrad const&amp; kom) { *this = bruch(kom.getRe()); } //Variante2 mit Aufruf des Kopierkonstruktors von bruch, also indirekter Aufruf von set
bruch(komrad const&amp; kom) : zaehler(kom.getRe().zaehler), nenner(kom.getRe().nenner) {} //Variante3 mit Initialisierungsliste
</code></pre>
<p>Allerdings brauchen alle drei versionen Zugriff auf den Realteil von komrad, daher sollte die Klasse komrad entweder eine Funktion wie getRe() definieren die den Realteil zurückgibt, oder sie sollte den Konstruktor von bruch zum Friend machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628194</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 10 Dec 2008 12:39:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 12:46:04 GMT]]></title><description><![CDATA[<p>von bruch auf komrad hab ich das so gelöst:</p>
<pre><code class="language-cpp">class komrad {
private:
    bruch re, im;
public:
    komrad (int zre, int nre, int zim, int nim) : re (zre, nre), im (zim, nim) {} 
    komrad (bruch const &amp; kre, bruch const &amp; kim) : re (kre), im(kim) {} 

    //hier die wichtige Zeile:  wenn die klasse komrad nen bruch bekommt, initialisiert sie re mit dem bruch, und im wird mit (0,0) initialisiert.
    komrad (bruch const &amp; kre) :re (kre), im(0,0) {}
</code></pre>
<p>damit kann ich entweder einer komrad einen bruch zuweisen oder komrad mit einem bruch initialisieren:</p>
<pre><code class="language-cpp">// in der main dann:
    bruch b1=bruch(1,2);
    bruch b2=bruch(3,4);
    bruch b3=bruch(4,5);

    komrad brueche_uebergeben=komrad(b1, b2);
    brueche_uebergeben.display();

    komrad bruch_uebergeben=komrad(b3);
    bruch_uebergeben.display();

    a=b1;
    a.display();
</code></pre>
<p>was zu folgender Ausgabe führt:</p>
<p>brueche_uebergeben: 1/2+3/4i<br />
bruch_uebergeben: 4/5+0/0i</p>
<p>a.display: 1/2+0/0i</p>
<p>das geleiche soll jetzt auch für bruch möglich sein, dem ein komrad gegeben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628200</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Wed, 10 Dec 2008 12:46:04 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 12:55:07 GMT]]></title><description><![CDATA[<p>die get-funktionen hab ich:</p>
<pre><code class="language-cpp">public:
    [...]  hier stehen die konstruktoren

    int get_imzaehler () { int a=0; return a=im.get_zaehler(); }
    int get_imnenner () { int a=0; return a=im.get_nenner(); }
    int get_rezaehler () { int a=0; return a=re.get_zaehler(); }
    int get_renenner () { int a=0; return a=re.get_nenner(); }
    bruch get_re () { return re;}
    bruch get_im () { return im;}
</code></pre>
<p>ok, sind vielleicht umständlich, aber sie funktionieren (glaub ich ^^)<br />
edit: get_re und <a href="http://get.im" rel="nofollow">get.im</a> hinzugefügt....</p>
<p>es bleibt aber immernoch bestehen, das ich folgende Fehler bekomme:</p>
<p>Fehler 1 error C2027: Verwendung des undefinierten Typs &quot;komrad&quot;<br />
Fehler 2 error C2228: Links von &quot;.get_re&quot; muss sich eine Klasse/Struktur/Union befinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628202</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Wed, 10 Dec 2008 12:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 15:22:16 GMT]]></title><description><![CDATA[<p>Ich habe jetzt alle 3 von Pumuckl vorgeschlagenen Varianten ausprobiert, doch bei jeder erhalte ich folgende Fehler:<br />
ich habe die Klasse komrad vorrangestellt, weiter unten iss der Anfang meines Codes.</p>
<p>Variante 1:</p>
<pre><code class="language-cpp">bruch(komrad const&amp; kom) { set(kom.getRe().zaehler, kom.getRe().nenner); } //Variante1 mit direktem Aufruf von set
</code></pre>
<p>Fehler 1 error C2027: Verwendung des undefinierten Typs &quot;komrad&quot;<br />
Fehler 2 error C2228: Links von &quot;.get_re&quot; muss sich eine Klasse/Struktur/Union befinden.<br />
Fehler 3 error C2228: Links von &quot;.zaehler&quot; muss sich eine Klasse/Struktur/Union befinden.<br />
Fehler 4 error C2027: Verwendung des undefinierten Typs &quot;komrad&quot;<br />
Fehler 5 error C2228: Links von &quot;.get_re&quot; muss sich eine Klasse/Struktur/Union befinden.<br />
Fehler 6 error C2228: Links von &quot;.nenner&quot; muss sich eine Klasse/Struktur/Union befinden.</p>
<p>Variante 2:</p>
<pre><code class="language-cpp">bruch(komrad const&amp; kom) { *this = bruch(kom.getRe()); } //Variante2 mit Aufruf des Kopierkonstruktors von bruch, also indirekter Aufruf von set
</code></pre>
<p>Fehler 1 error C2027: Verwendung des undefinierten Typs &quot;komrad&quot;<br />
Fehler 2 error C2228: Links von &quot;.get_re&quot; muss sich eine Klasse/Struktur/Union befinden.</p>
<p>Variante 3:</p>
<pre><code class="language-cpp">bruch(komrad const&amp; kom) : zaehler(kom.get_re().zaehler), nenner(kom.get_re().nenner) {}
</code></pre>
<p>Fehler 1 error C2027: Verwendung des undefinierten Typs &quot;komrad&quot;<br />
Fehler 2 error C2228: Links von &quot;.get_re&quot; muss sich eine Klasse/Struktur/Union befinden.<br />
Fehler 3 error C2228: Links von &quot;.zaehler&quot; muss sich eine Klasse/Struktur/Union befinden.<br />
Fehler 4 error C2027: Verwendung des undefinierten Typs &quot;komrad&quot;<br />
Fehler 5 error C2228: Links von &quot;.get_re&quot; muss sich eine Klasse/Struktur/Union befinden.<br />
Fehler 6 error C2228: Links von &quot;.nenner&quot; muss sich eine Klasse/Struktur/Union befinden.</p>
<p>so sieht derzeit der Anfang meines Codes aus:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class komrad;
class bruch {
private:
   int zaehler, nenner;
public:
    bruch (int z,int n) {set (z, n);}
    bruch (int zaehler) {int nenner=1; set(nenner, zaehler);}
    bruch (const bruch&amp; a) {zaehler=a.zaehler; nenner=a.nenner;}

    // eigener Versuch:
    //bruch (komrad blubb) 
    //{
    //    int hilfszaehler=0, hilfsnenner=0;
    //    hilfszaehler=blubb.get_rezaehler();
    //    hilfsnenner=blubb.get_renenner();
    //    set(hilfszaehler, hilfsnenner);    
    //}

    //bruch(komrad const&amp; kom) { set(kom.get_re().zaehler, kom.get_re().nenner); }  // Variante 1
    //bruch(const komrad&amp; a)   { *this = bruch(a.get_re()); }  // Variante 2
    //bruch(komrad const&amp; kom) : zaehler(kom.get_re().zaehler), nenner(kom.get_re().nenner) {}  // Variante 3
    ~bruch (){/*cout &lt;&lt; &quot;Destructing bruch &quot; &lt;&lt; zaehler &lt;&lt; &quot;/&quot; &lt;&lt; nenner &lt;&lt; endl;*/}

[...]  jede Menge weiterer Zeilen Code ....
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1628325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628325</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Wed, 10 Dec 2008 15:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 15:22:25 GMT]]></title><description><![CDATA[<p>In der Fehlermeldung steht ja, dass du einen nicht definierten Typ verwendest. Die Klasse <code>komrad</code> muss hier vollständig bekannt sein, eine Vorwärtsdeklaration reicht nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628327</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 10 Dec 2008 15:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 15:40:49 GMT]]></title><description><![CDATA[<p>naja, aber irgendwas muss als erstes stehen.</p>
<p>Ich verwende bruch in der klasse komrad, genauso wie ich komrad in der Klasse bruch verwende...<br />
Da beißst sich die Schlange selbst in den Schwanz <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>
<p>schau:</p>
<p>meine Klasse bruch steht ja oben...<br />
und genauso isses auch in der Klasse komrad:</p>
<pre><code class="language-cpp">[...] // Klasse bruch usw.

class komrad {
private:
    bruch re, im;
public:
    komrad (int zre, int nre, int zim, int nim) : re (zre, nre), im (zim, nim) {} 
    komrad (bruch const &amp; kre, bruch const &amp; kim) : re (kre), im(kim) // Aufruf des Kopierkonstruktors...
    {} //&lt;&gt; Name der Membervariablen (Kein this!)
       //   &lt;&gt; Name des Parameters
    komrad (bruch const &amp; kre) :re (kre), im(0,0) {}
    ~komrad(){}

[...]  // jede Menge Code :)
</code></pre>
<p>Ich habs ausprobiert, ich hab komrad vor bruch gestellt, nur dann krieg ich die Fehlermeldungen bei komrad, weil bruch net bekannt iss <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1628346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628346</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Wed, 10 Dec 2008 15:40:49 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 15:46:46 GMT]]></title><description><![CDATA[<p>Das ist nicht so gut, wenn sich die beiden Klassen gegenseitig verwenden. Wofür braucht ein Bruch eine komplexe Zahl zu kennen? Ich denke, du willst ja in der komplexen Zahl zwei Brüche (Real- und Imaginärteil) speichern, die ja selber reell sind.</p>
<p>Abgesehen davon teilt man Klassen normalerweise in Schnittstelle (Klassendefinition, Deklaration der Memberfunktionen) und Implementierung (Definition der Memberfunktionen auf). Die Schnittstelle befindet sich in einer Headerdatei (.h/.hpp), die Implementierung in einer kompilierbaren C++-Datei (.cpp).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628350</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 10 Dec 2008 15:46:46 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 15:48:37 GMT]]></title><description><![CDATA[<p>ich hab keine Ahnung was normal iss, und ich hab keine Ahnung, warum grade die komrad 2x bruch beinhalten soll.</p>
<p>Was ich aber weiß iss, das es die Aufgabenstellung des Professors iss.</p>
<p>● Ergänzen Sie zur Typumwandlung Cast-Funktionen (z.B. über<br />
Typumwandlungs-Konstruktoren) von der Klasse KompRat zur Klasse<br />
Bruch und umgekehrt. Bei der Verwandlung zum Bruch wird der<br />
Imaginär-Teil verworfen. Bei der Verwandlung zur „komplexen rationalen<br />
Zahl“ wird der Imaginärteil auf Null initialisiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628352</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Wed, 10 Dec 2008 15:48:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Wed, 10 Dec 2008 15:50:52 GMT]]></title><description><![CDATA[<p>Nun will ja schon die Aufgabenstellung, dass du in beiden Klassen einen Copy-Konstruktor für die jeweils andere Klasse hast, wenn ich mir das genau genug durchgelesen habe. Da bleibt nichts anderes, als die Implementierung in ein Modul (eine neue .cpp) auszulagern. Solange in der Deklaration nur die Referenzen verwendet werden, kommst du mit Vorwärtsdeklaration aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628353</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 10 Dec 2008 15:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse beinhaltet Objekte einer anderen Klasse, wie? on Thu, 11 Dec 2008 00:11:01 GMT]]></title><description><![CDATA[<p>Danke für die Idee <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>
<p>Leider gab es sowas bisher net in ner Vorlesung, auch das Script geht hierauf nirgends ein, genauso wenig mein Buch. Ich glaube auch kaum, das der Prof es sich so vorgestellt hat (es wäre schon sehr weit von den Themen weg, die wir in der Vorlesung behandelt haben und noch behandeln werden).</p>
<p>Es kann aber gut sein, das die Kommunikation zwischen meinem Prof und seinem Hiwi etwas... gehinkt hat, wär net das erste mal ^^</p>
<p>Ich werd morgen mal den Prof selbst dazu fragen, das hat bisher immer Früchte getragen.</p>
<p>meanwhile... wenn jemand noch ne Idee hat, immer her damit <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1628569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628569</guid><dc:creator><![CDATA[Lanfear]]></dc:creator><pubDate>Thu, 11 Dec 2008 00:11:01 GMT</pubDate></item></channel></rss>