<?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[Pointer auf Basiaklasse]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>komme im Moment leider nicht mehr weiter, habe eine abgeleitete Klasse bzw. mehrere und muss auf die Basisklasse zugreifen und will nun in der abgeleiteten Klasse eine Variable als Pointer auf die Basisklasse erstellen, kann mir bitte einer verraten wie das funktioniert?</p>
<p>Wenn ich einen Pointer anlege muss ich ja die Basisklasse einbinden was dann meiners Erachtens eine Endlosschleife ergibt da dann auf jeden Fall massen Fehler entstehen...</p>
<p>Danke<br />
Niels</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180067/pointer-auf-basiaklasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 12:22:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180067.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Apr 2007 12:07:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 12:07:33 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>komme im Moment leider nicht mehr weiter, habe eine abgeleitete Klasse bzw. mehrere und muss auf die Basisklasse zugreifen und will nun in der abgeleiteten Klasse eine Variable als Pointer auf die Basisklasse erstellen, kann mir bitte einer verraten wie das funktioniert?</p>
<p>Wenn ich einen Pointer anlege muss ich ja die Basisklasse einbinden was dann meiners Erachtens eine Endlosschleife ergibt da dann auf jeden Fall massen Fehler entstehen...</p>
<p>Danke<br />
Niels</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275105</guid><dc:creator><![CDATA[Gamewalker]]></dc:creator><pubDate>Sat, 28 Apr 2007 12:07:33 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 12:18:05 GMT]]></title><description><![CDATA[<p>Äh ... da braucht's nix Besonderes: Ein abgeleitetes Objekt IST ein Basisobjekt und hat dementsprechend dieselben Elemente (darf allerdings nicht auf private zugreifen).<br />
Beispiel:</p>
<pre><code class="language-cpp">class Basis {
public:
   int a;
private:
   int b;
};

class Abgeleitet {
public:
   void f() { cout &lt;&lt; a; }
   void g() { cout &lt;&lt; b; } // Compilefehler: Zugriff verboten
};
</code></pre>
<p>Wenn Du natürlich (was aber mindestens &quot;ungeschickt&quot; ist) die Elemente &quot;verdeckt&quot; hast, musst Du sie mit dem Namen der Basisklasse vorher spezigizieren....</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class Basis {
public:
   int a;
};

class Abgeleitet {
public:
   int a;
   void f() { cout &lt;&lt; a; } // gibt Abgeleitet::a aus
   void g() { cout &lt;&lt; Basis::a; } // gibt Basis::a aus
};
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275106</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 28 Apr 2007 12:18:05 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 12:16:52 GMT]]></title><description><![CDATA[<p>oh man, sollte aus der Sonne gehen, mist geschrieben ^^</p>
<p>hm ander schreiben:</p>
<p>Welt<br />
erstellt<br />
Ameisenbau (soll Pointer auf die Welt haben)<br />
erstellt<br />
Ameisen (soll Pointer auf Ameisenbau haben)<br />
-Königin<br />
-Arbeiter<br />
-...</p>
<p>So, nu stimmt auch das mit dem Includen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275108</guid><dc:creator><![CDATA[Gamewalker]]></dc:creator><pubDate>Sat, 28 Apr 2007 12:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 12:22:55 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>leicht OT: Ich hoffe, Ameisenbau und Ameise erben nicht von Welt und Ameise nicht von -bau, oder ?</p>
<p>Entweder arbeitest Du mit Pointern (wenn die Kopplung lockerer ist) oder mit Referenzen (feste Kopplung).</p>
<p>In diesem Fall schenen ir Referenzen gar nicht so dumm, weil wohl kein Ameisenbau die Welt wechselt (oder vor der Welt entsteht und erst nachträglich mit ihr verbunden wird) und das evtl. auch für die Ameisen und ihren Bau gilt (da bin ich mir aber nicht so sicher).<br />
Der Vorteil ist: Du brauchst Dir in den Ameisenbau-Funktionen nie mehr Gedanken darüber machen, ob der Welt* geüllt ist, oder nicht. Außerdem weiß ein Anwender von Ameisenbau auf einen Blick, dass er zuerst eine Welt schaffen muss, bevor er einen Ameisenbau anlegen kann.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275112</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 28 Apr 2007 12:22:55 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 12:30:01 GMT]]></title><description><![CDATA[<p>genau so ist es, Welt eigenständig, Ameisenbau eigenständig und nur Arbeiter und Königin sind von Ameise abgeleitet, so weiß jeder nur das was er brauch, &quot;Problem&quot; ist halt das die Königin neue Ameisen erzeugt aber diese in den Ameisenbau geschrieben werden müssen, da er sich um die speicherung der Ameisen kümmert, deswegen muss ich von der Königin aus auf den Bau zureifen und dort die Ameisen erstellen. Wie kriege ich nun nen Pointer auf den Erzeuger? ^^</p>
<p>OT: Wie ist der Befehl um den Klassennamen zu kriegen? ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275116</guid><dc:creator><![CDATA[Gamewalker]]></dc:creator><pubDate>Sat, 28 Apr 2007 12:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 12:52:25 GMT]]></title><description><![CDATA[<p>Gamewalker schrieb:</p>
<blockquote>
<p>genau so ist es, Welt eigenständig, Ameisenbau eigenständig und nur Arbeiter und Königin sind von Ameise abgeleitet ...</p>
</blockquote>
<p>[ED WOOD] PEEEEEEEERFECKT !![/ED WOOD];)</p>
<p>Gamewalker schrieb:</p>
<blockquote>
<p>Wie kriege ich nun nen Pointer auf den Erzeuger? ^^...</p>
</blockquote>
<p>Beim Erzeugen mitgeben...</p>
<pre><code class="language-cpp">class Ameisenbau {
   Welt&amp; meineWelt;
public:
   Ameisenbau(Welt&amp; erzeugendeWelt) : meineWelt(erzeugendeWelt) {}
};

int main() {
   Welt welt;
   Ameisenbau Bau(welt);
...
</code></pre>
<p>Übrigens: Ich würde &quot;die Ameisenerzeugermimik&quot; nicht in der Ameise verdrahten, weil damit prinzipiell jede Ameise das könnte und man es umständlich für alle Nichtköniginnen verbieten müsste.</p>
<pre><code class="language-cpp">class Ameise {
public:
   Ameise(Ameisenbau&amp; bau) : meinBau(bau) {}
   void laufen();
   virtual ~Ameise() {} // virtual Dtr zeigt: Kannst von mir ableiten !
};

class Ameisenerzeuger {
public:
   Ameise* erzeugeAmeise(AmeisenBau&amp; bau, int ameisenTyp);
};

class Koenigin : public Ameise, public Ameisenerzeuger {
public:
   Koenigin(Ameisenbau&amp; bau) : Ameise(bau) {}
};

class Arbeiter : public Ameise {
public:
   void arbeite();
};

Ameise* Ameisenerzeuger::erzeugeAmeise(AmeisenBau&amp; bau, int ameisenTyp) { 
  if(ameisenTtyp = Arbeiter) return new Arbeiter(bau); //natürlich besser mit enums/switch
  if(ameisenTyp = Koenigin) return new Koenigin(bau);
}
</code></pre>
<p>Ach ja: Es gibt typeid - allerdings:<br />
1.) ist IIRC der entstehende String nicht standardisiert, so dass man ihn nicht in einem Programm verdrahten sollte (wenn, dann im Vergleich mit &quot;typeid Klasse&quot;)<br />
2.) Zu Testzwecken noch ganz OK, ist sowas üblicherweise ein Zeichen einer Designschwäche, wenn man etwas derartiges braucht. Ein wenig besser der dynamic_cast - gut ist nur, wenn man ganz ohne auskommt.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275122</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 28 Apr 2007 12:52:25 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 13:20:54 GMT]]></title><description><![CDATA[<p>genau da liegt mein Problem, denke hab nur was simples falsch gemacht:</p>
<pre><code class="language-cpp">#include &quot;CAntHeap&quot;; //meine hier
class CAnt
{
public:
   CAnt(void);
   CAnt(CAntHeap* MyHeap);
   ~CAnt(void);

private:
   CAntHeap* m_MyHeap;
}
</code></pre>
<p>mal ein bisschen vereinfacht.</p>
<pre><code class="language-cpp">#include &quot;CAnt&quot;;

class CQueen : public CAnt
{
public:
   CQueen(void);
   ~CQueen(void);

   DoProduceEgg()
   {
      m_MyHeap-&gt;NewAnt();
   }
}
</code></pre>
<pre><code class="language-cpp">#include &quot;CAnt&quot;;

class CAntHeap
{
public:
   CAntHeap();
   ~CAntHeap();

   NewAnt();

private:
   list&lt;CAnt*&gt; m_lAnts;
}
</code></pre>
<p>Wenn ich das mache kommen Haufenweise Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275148</guid><dc:creator><![CDATA[Gamewalker]]></dc:creator><pubDate>Sat, 28 Apr 2007 13:20:54 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 13:28:52 GMT]]></title><description><![CDATA[<p>Da du nur nen pointer auf ne klasse hast reicht es wenn du sagst, das CAntHeap ne klasse ist.<br />
so:</p>
<pre><code class="language-cpp">//#include &quot;CAntHeap&quot;; //meine hier
class CAntHeap;
class CAnt
{
public:
   CAnt(void);
   CAnt(CAntHeap* MyHeap);
   ~CAnt(void);

private:
   CAntHeap* m_MyHeap;
}
</code></pre>
<p>mal ein bisschen vereinfacht.</p>
<pre><code class="language-cpp">#include &quot;CAnt&quot;;

class CQueen : public CAnt
{
public:
   CQueen(void);
   ~CQueen(void);

   DoProduceEgg()
   {
      m_MyHeap-&gt;NewAnt();
   }
}
</code></pre>
<pre><code class="language-cpp">#include &quot;CAnt&quot;;

class CAntHeap
{
public:
   CAntHeap();
   ~CAntHeap();

   NewAnt();

private:
   list&lt;CAnt*&gt; m_lAnts;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1275150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275150</guid><dc:creator><![CDATA[rollingstones.]]></dc:creator><pubDate>Sat, 28 Apr 2007 13:28:52 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf Basiaklasse on Sat, 28 Apr 2007 14:00:19 GMT]]></title><description><![CDATA[<p>ja das klar, da nen Pointer immer gleich viel Speicher brauch, nur ist das ja net gerade sauber oder ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275176</guid><dc:creator><![CDATA[Gamewalker]]></dc:creator><pubDate>Sat, 28 Apr 2007 14:00:19 GMT</pubDate></item></channel></rss>