<?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[Objekt, dem mehrere andere Objekte zugeordnet sind?!]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich verzweifel hier gerade... normal mit Klassen kommme ich *solala* zurecht, nun will ich aber folgendes:</p>
<p>Ein Objekt meinHaus (von der Klasse haus). Diesem Objekt sollen n Objekte meinZimmer (von der Klasse zimmer) zugeordnet sein. Die Klasse zimmer enthält dann Methoden wie getInneneinrichtung usw...</p>
<p>Optimal sollte es hinterher so in etwa ansprechbar sein:</p>
<pre><code>meinHaus.meinZimmer[i].getInneneinrichtung()
</code></pre>
<p>Meine bisherige Idee dazu wäre:</p>
<pre><code>class zimmer{
private:
	float preisZimmer;
public:
	void getInneneinrichtung();
};

class haus{
private:
	float preisHaus;

public:
	void getPreis();
	zimmer meinZimmer;// ????? //
};
</code></pre>
<p>so soll jedes Zimmer für sich über die Summe der inneneinrichtung den preis ermitteln und dann soll man aus der Summe der Objekte Zimmer den Preis für Einrichtung des Hauses bestimmen können (ist eh nur ein Beispiel...).</p>
<p>Ein Zimmer hätte ich nach dem Beispiel dann schon. Kann das auch wie geplant ansprechen mit</p>
<pre><code>meinHaus.meinZimmer.getInneneinrichtung()
</code></pre>
<p>.</p>
<p>Nun will ich aber, das der Anwender bestimmt, wieviele Zimmer das Haus nun haben soll.</p>
<p>normalerweise würde ich die Objekte dann so erstellen:</p>
<pre><code>cin &lt;&lt; zimmerZahl;
zimmer* meinZimmer=new zimmer[zimmerZahl];
[...]
delete[] meinZimmer;
</code></pre>
<p>Aber das geht leider nicht in der Klassendeklaration. Jemand, der mir nur bedingt helfen kann, gab mir den Tipp, das ich das mit Zeigern und Referenzen irgendwie lösen könnte, aber ich schnall es einfach nicht <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>würde mich sehr freuen, wenn mir jemand helfen könnte - möglichst nicht all zu &quot;kryptisch&quot; <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>/*<br />
edit: mein Ziel ist es hinterher n Häuser mit m Zimmern erstellen zu können:</p>
<pre><code>meinHaus[n].meinZimmer[m].getInneneinrichtung();
</code></pre>
<p>*/</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221286/objekt-dem-mehrere-andere-objekte-zugeordnet-sind</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 05:54:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221286.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Aug 2008 12:14:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:26:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich verzweifel hier gerade... normal mit Klassen kommme ich *solala* zurecht, nun will ich aber folgendes:</p>
<p>Ein Objekt meinHaus (von der Klasse haus). Diesem Objekt sollen n Objekte meinZimmer (von der Klasse zimmer) zugeordnet sein. Die Klasse zimmer enthält dann Methoden wie getInneneinrichtung usw...</p>
<p>Optimal sollte es hinterher so in etwa ansprechbar sein:</p>
<pre><code>meinHaus.meinZimmer[i].getInneneinrichtung()
</code></pre>
<p>Meine bisherige Idee dazu wäre:</p>
<pre><code>class zimmer{
private:
	float preisZimmer;
public:
	void getInneneinrichtung();
};

class haus{
private:
	float preisHaus;

public:
	void getPreis();
	zimmer meinZimmer;// ????? //
};
</code></pre>
<p>so soll jedes Zimmer für sich über die Summe der inneneinrichtung den preis ermitteln und dann soll man aus der Summe der Objekte Zimmer den Preis für Einrichtung des Hauses bestimmen können (ist eh nur ein Beispiel...).</p>
<p>Ein Zimmer hätte ich nach dem Beispiel dann schon. Kann das auch wie geplant ansprechen mit</p>
<pre><code>meinHaus.meinZimmer.getInneneinrichtung()
</code></pre>
<p>.</p>
<p>Nun will ich aber, das der Anwender bestimmt, wieviele Zimmer das Haus nun haben soll.</p>
<p>normalerweise würde ich die Objekte dann so erstellen:</p>
<pre><code>cin &lt;&lt; zimmerZahl;
zimmer* meinZimmer=new zimmer[zimmerZahl];
[...]
delete[] meinZimmer;
</code></pre>
<p>Aber das geht leider nicht in der Klassendeklaration. Jemand, der mir nur bedingt helfen kann, gab mir den Tipp, das ich das mit Zeigern und Referenzen irgendwie lösen könnte, aber ich schnall es einfach nicht <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>würde mich sehr freuen, wenn mir jemand helfen könnte - möglichst nicht all zu &quot;kryptisch&quot; <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>/*<br />
edit: mein Ziel ist es hinterher n Häuser mit m Zimmern erstellen zu können:</p>
<pre><code>meinHaus[n].meinZimmer[m].getInneneinrichtung();
</code></pre>
<p>*/</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572179</guid><dc:creator><![CDATA[maSu]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:35:55 GMT]]></title><description><![CDATA[<p>...</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
class zimmer{
private:
	float preisZimmer;
public:
	void getInneneinrichtung();
};

class haus{
private:
	float preisHaus;

public:
	void getPreis();
	std::vector&lt;zimmer&gt; meineZimmer;
};
</code></pre>
<p>Du kannst Zimmer entweder am Anfang einfügen:</p>
<pre><code class="language-cpp">haus h;
h.meineZimmer.resize(10); // 10 leere Zimmer
</code></pre>
<p>oder stück für Stück erweitern:</p>
<pre><code class="language-cpp">haus h;
h.meineZimmer.push_back(zimmer()); // 1 weiteres leeres Zimmer 
h.meineZimmer.push_back(zimmer()); // ... noch eins
</code></pre>
<p>Weiteres z.B: Unter <a href="http://www.cppreference.com/cppvector/index.html" rel="nofollow">std::vector</a>.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572191</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:35:55 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:40:09 GMT]]></title><description><![CDATA[<p>Danke Simon2.</p>
<p>Es funktioniert ganz gut <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>Aber...</p>
<p>kann man das nicht auch ohne Vektoren, also nur mit Zeigern oder Referenzen lösen?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572200</guid><dc:creator><![CDATA[maSu]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:40:09 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:40:54 GMT]]></title><description><![CDATA[<p>Von Kapselung halten wir wohl nicht viel, nicht wahr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572201</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:40:54 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:41:50 GMT]]></title><description><![CDATA[<p>maSu schrieb:</p>
<blockquote>
<p>Danke Simon2.</p>
<p>Es funktioniert ganz gut <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>Aber...</p>
<p>kann man das nicht auch ohne Vektoren, also nur mit Zeigern oder Referenzen lösen?!</p>
</blockquote>
<p>Nein! Auf gar keinen Fall. Eine Klasse sollte immer eine wohldefinierte Aufgabe erledigen und das Verwalten von Speicher ist eine Aufgabe, das Verwalten von Zimmern eine andere. Deshalb benutzt std::vector für die Speicherverwaltung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572203</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:42:20 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>maSu schrieb:</p>
<blockquote>
<p>kann man das nicht auch ohne Vektoren, also nur mit Zeigern oder Referenzen lösen?!</p>
</blockquote>
<p>Warum? Wenn du C++ lernen oder machen willst, dann solltest du auch die entsprechenden Sprachmittel verwenden.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572205</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:42:20 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:55:46 GMT]]></title><description><![CDATA[<p>Einerseits hast du recht chrische, andererseits schadet es nicht alternativen zu kennen, falls man mal nicht zugriff auf alles mögliche hat, es also irgendwie &quot;zu fuß&quot; schaffen muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572218</guid><dc:creator><![CDATA[maSu]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:55:46 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:58:02 GMT]]></title><description><![CDATA[<p>maSu schrieb:</p>
<blockquote>
<p>Einerseits hast du recht chrische, andererseits schadet es nicht alternativen zu kennen, falls man mal nicht zugriff auf alles mögliche hat, es also irgendwie &quot;zu fuß&quot; schaffen muss.</p>
</blockquote>
<p>Dann schreib dir halt zur Übung dein eigenes dynmisches Array, aka std::vector, und du kannst ja auch gerne dieses dann benutzen.<br />
Aber du wirst in C++ immer darauf Zugriff haben, abgesehen davon erfüllt der std::vector einige Eigenschaften, so dass du ihn auch in Verbindung mit C-APIs nutzen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572220</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 12:58:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Wann hast du denn keinen Zugriff auf std::vector? Klar kann man auch alles selber machen, aber dann wirst du nicht fertig. Warum implementierst du nicht cin und cout selber?</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572222</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Aug 2008 12:58:59 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 13:02:39 GMT]]></title><description><![CDATA[<p>jaja is ja gut *in die ecke geht und sich 5 minuten schämt* <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>und danke @all <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/1572226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572226</guid><dc:creator><![CDATA[maSu]]></dc:creator><pubDate>Wed, 27 Aug 2008 13:02:39 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 13:43:14 GMT]]></title><description><![CDATA[<p>maSu schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class zimmer{
private: //vll noch nen Zimmername? ne Quadratmeteranz. oder so was... kA
	float preisZimmer;
public:
	void getInneneinrichtung(); //Get... aber kein Rückgabetyp? OO
};

class haus{
private:
	float preisHaus;

public:
	void getPreis(); //float GetPreis () const;
	zimmer meinZimmer; //std::vector / std::map (std::string name, zimmer)
};
</code></pre>
</blockquote>
<p>Hmm?<br />
sieht alles sehr komisch aus, find ich...<br />
die einrückung ist auch nicht sooo prall...</p>
<pre><code class="language-cpp">class haus {
  public:
    ...
};
</code></pre>
<p>wenn schon...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572264</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 27 Aug 2008 13:43:14 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 13:59:17 GMT]]></title><description><![CDATA[<p>ohne vector<br />
// ausn kopf, muss nicht so funzen</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
class Zimmer
{
private:
    double _Preis;
public:
    double GetPreis();
    Inneneinrichtung GetInneneinrichtung();
};

class Haus
{
private:
    double _Preis;

public:
    Haus(int zimmerAnzahl)
    {
        _meineZimmer = new zimmerAnzahl[zimmerAnzahl];
    }
    ~Haus()
    {
        delete[] _meineZimmer;
    }
    void GetPreis();
    Zimmer* _meineZimmer;
};

.
Using:
.

Haus haus = Haus(10); // 10 zimmer
double hausPreis = haus.GetPreis();
double zimmerPreis = haus._meineZimmer[4].GetPreis();
</code></pre>
<p>und schon sieht man stinkenden code (an dem &quot;_&quot;) - die zimmer sollten nicht frei zugaenglich sein, sei es ein vector oder ein roher zeiger - stichwort kapselung<br />
die zimmer sollten immer ueber eine schnittstelle von Haus laufen - einmal erstellt sollten die zimmer nicht mehr oder weniger werden koennen (es sei denn man implementiert eine &quot;Ausbauen&quot; methode) - so wie es oben ist koennte man die zimmeranzahl von aussen manipulieren</p>
<p>besser ist &quot;GetZimmer(x).Preis&quot; usw welches dann auch prueft ob es x zimmer gibt</p>
<p>// grr - ich sollte meine beitraeger genauer lesen vorm abschicken #gg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572274</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Wed, 27 Aug 2008 13:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 17:32:59 GMT]]></title><description><![CDATA[<p>ahh ja, wunderbar <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>so in der Art dachte ich mir das, war aber noch zu unsicher mit Klassen um das so hinzukriegen - hatte das im Code statt im konstruktor woanders geschrieben (ich sag jetzt nicht wo, ist mir echt zu peinlich ^^) und deswegen klappte das nicht und ich hab dann schließlich hier gefragt <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>also nochmal danke an alle, besonders an Mr Evil und Simon2 <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/1572442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572442</guid><dc:creator><![CDATA[maSu]]></dc:creator><pubDate>Wed, 27 Aug 2008 17:32:59 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 17:41:47 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Auch wenn du mich ausgeschlossen hast <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="😉"
    /> , solltest du unbedingt std::vector benutzen. Warum wurde ja bereits mehrfach gesagt und geschrieben.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572448</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 27 Aug 2008 17:41:47 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Wed, 27 Aug 2008 19:08:19 GMT]]></title><description><![CDATA[<p>joa vector ist schon gut, nur wollt ich auch eine Ahnung haben, wie es ohne gehen könnte <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>In meinem Proggi (mini-möchtegern-datenbank <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="😉"
    /> ) ist es auch mit vector nun gemacht. das Handling ist doch recht einfach und für mich auch sicherer und effizienter wohl auch, sogar wenn ich es nutze <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1572532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572532</guid><dc:creator><![CDATA[maSu]]></dc:creator><pubDate>Wed, 27 Aug 2008 19:08:19 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Thu, 28 Aug 2008 06:53:31 GMT]]></title><description><![CDATA[<p>maSu schrieb:</p>
<blockquote>
<p>joa vector ist schon gut, nur wollt ich auch eine Ahnung haben, wie es ohne gehen könnte ;)...</p>
</blockquote>
<p>Hast Du auch schonmal gesagt:<br />
&quot;Ich wollte mal wissen, wie man das ohne (char-)Arrays macht!&quot; ?</p>
<p>Seltsamerweise hört man zwar immer wieder mal die Begründung (meistens von &quot;Frischlingen&quot; <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="😉"
    /> )<br />
&quot;Ich wollte mal wissen, wie man das ohne &lt;xyz&gt; macht!&quot; (&lt;xyz&gt; ist dabei aus {&quot;vector&quot;, &quot;string&quot;, &quot;map&quot;, ... })<br />
aber denselben Anspruch mal an Arrays anzulegen, kommt Anfängern anscheinend nie in den Sinn.</p>
<p>Dahinter scheint immer doch noch die alte (Irr-)Meinung zu stehen, Arrays seien irgendwie &quot;echter&quot; als die StdLib-Komponenten... mal sehen, ob diese Nummer irgendwann mal ausstirbt, oder ob in alle Ewigkeit (immer neue) C++-Anfänger damit infiziert werden.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572677</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 28 Aug 2008 06:53:31 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Thu, 28 Aug 2008 07:36:00 GMT]]></title><description><![CDATA[<p>Hmm, ich mahc mir grade Gedanken wie man eine Zugriff á la</p>
<pre><code class="language-cpp">einhaus.zimmer[5]
</code></pre>
<p>ermöglichen kann ohne dem Klienten gleich den ganzen Container über public Zugriff in die Hand zu geben. Ein erster Ansatz:</p>
<pre><code class="language-cpp">//traits für die Rückgabetypen des op[] bei verschiedenen Container-Typen
template &lt;class T&gt; //allgemein, STL-kompatibel (vector, deque...)
struct ref_types_of {
  typedef typename T::reference reference;
  typedef typename T::const_reference const_reference;
};

template &lt;typename key, typename val, class comp, class alloc&gt; //partiell spezialisiert für map, gleiches muss für multimap gemacht werden...
struct ref_types_of&lt; std::map&lt;key,val,comp,alloc&gt; &gt; {
  typedef val&amp; reference;
  typedef val const&amp; const_reference; //auch wenns kein op[] const gibt fuer map
};

template &lt;typename T&gt; //partiell spezialisiert für Arrays/Pointer
struct ref_types_of&lt;T*&gt; {
  typedef T&amp; reference;
  typedef T const&amp; const_reference;
};

//Klasse für Zugriffseinschränkung auf Container mit op[]
template &lt;class Cont&gt;
class accessforward {
  Cont&amp; container;
public:
  accessforward(Cont&amp; cont) : container(cont) {}

  template &lt;typename Key&gt; //soll für alle möglichen Typen gehen, die Konvertierung findet dann ggf. beim Aufruf von container[key] statt
  typename ref_types_of&lt;Cont&gt;::reference operator[](Key const&amp; key) {
    return container[key];
  }

  template &lt;typename Key&gt;
  typename ref_types_of&lt;Cont&gt;::const_reference operator[](Key const&amp; key) const {
    return container[key];
  }
};

class Zimmer;
class Haus {
  std::vector&lt;Zimmer&gt; die_zimmer;
public:

  accessforward&lt;std::vector&lt;Zimmer&gt; &gt; zimmer;

  Haus(size_t nzimmer) : die_zimmer(nzimmer), zimmer(die_zimmer);
};

//[using]
Haus meinhaus(5);
meinhaus.zimmer[4].getInneneinrichtung(); //accessforward::operator[] leitet weiter an std::vector&lt;Zimmer&gt;::operator[]
</code></pre>
<p>Man könnte natürlich direkt den Container in accessforward einbauen, allerdings hätte dann Haus genauso eingeschränkten Zugriff auf den Container wie alle anderen auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572712</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 28 Aug 2008 07:36:00 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Thu, 28 Aug 2008 08:45:07 GMT]]></title><description><![CDATA[<p>warum nicht mit getter ?</p>
<p>Zimmer zimmer = einHaus.GetZimmer(5);</p>
<p>in GetZimmer kann dann auch die pruefung von statten gehen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572769</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Thu, 28 Aug 2008 08:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Thu, 28 Aug 2008 09:14:46 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>warum nicht mit getter ?</p>
<p>Zimmer zimmer = einHaus.GetZimmer(5);</p>
<p>in GetZimmer kann dann auch die pruefung von statten gehen</p>
</blockquote>
<p>Das ist ja etwas ganz anderes als er basteln wollte.<br />
Da man aber so oder so angeben muss auf was man von außen Zugriff haben darf, kann man die Methoden meist auch direkt in die Klasse einbauen. Pumuckls Vorschlag würde einem aber Arbeit sparen, wenn man diese Art von Forward mehrfach benötigt.</p>
<p>Allerdings hat diese Methode ein paar Nachteile:<br />
-Man kann zimmer austauschen gegen ein anderes accessforward Objekt<br />
-Der Benutzer kann Referenzen darauf speichern und nach einem Austausch wären diese ungültig<br />
-Man muss das zimmer Attribut immer dabehalten - macht also zukünftige Umstrukturierungen eventuell problematisch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572793</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Thu, 28 Aug 2008 09:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Thu, 28 Aug 2008 09:44:26 GMT]]></title><description><![CDATA[<p>was wäre wenn zimmer einfach eine const reference auf den vector ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572802</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 28 Aug 2008 09:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt, dem mehrere andere Objekte zugeordnet sind?! on Thu, 28 Aug 2008 11:37:21 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>was wäre wenn zimmer einfach eine const reference auf den vector ist?</p>
</blockquote>
<p>Dann kann nur op[] const für den vector aufgerufen werden, der dann wiederum nur const referenzen auf die Zimmer liefert -&gt; Zimmer sind auch für ein non-const Haus nicht veränderbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572880</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 28 Aug 2008 11:37:21 GMT</pubDate></item></channel></rss>