<?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[Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen)]]></title><description><![CDATA[<p>Ich muss euch mal wieder mit einer Anfängerfrage belästigen. Ich versuch mein Anliegen mal verständlich zu formulieren.</p>
<p>Also eine Klasse soll als Eigentschaft einen Pointer haben, der auf ein schon vorhandenes Objekt einer anderen Klasse zeigt. Wie kann ich das bewerkstelligen? Dabei muss die Möglichkeit bestehen, dass dann auf ein bestimmtes Objekt gezeigt werden kann, wenn ich ein Objekt der Klasse erzeuge.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298409/anfängerfrage-zu-pointer-soll-auf-objekt-anderer-klasse-zeigen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 19:50:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298409.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Jan 2012 13:50:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 13:50:33 GMT]]></title><description><![CDATA[<p>Ich muss euch mal wieder mit einer Anfängerfrage belästigen. Ich versuch mein Anliegen mal verständlich zu formulieren.</p>
<p>Also eine Klasse soll als Eigentschaft einen Pointer haben, der auf ein schon vorhandenes Objekt einer anderen Klasse zeigt. Wie kann ich das bewerkstelligen? Dabei muss die Möglichkeit bestehen, dass dann auf ein bestimmtes Objekt gezeigt werden kann, wenn ich ein Objekt der Klasse erzeuge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170064</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Thu, 19 Jan 2012 13:50:33 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 13:55:06 GMT]]></title><description><![CDATA[<p>Den Pointer als Konstruktorargument übergeben, würde ich sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170069</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 19 Jan 2012 13:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 14:49:20 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Den Pointer als Konstruktorargument übergeben, würde ich sagen.</p>
</blockquote>
<p>Ok danke. Was mir jetzt noch fehlt, wie definiere ich den Pointer als Eigenschaft in der Klasse? Da hab ich noch keinen Ansatz zu entwickeln können. Ich hab zwar schon hier im Forum die Suche und Google bemüht, aber noch Nichts passendes finden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170093</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Thu, 19 Jan 2012 14:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 14:51:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class eineKlasse
{
   ...
   andereKlasse *ptr;
   ...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2170097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170097</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 19 Jan 2012 14:51:58 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 15:14:36 GMT]]></title><description><![CDATA[<p>Wäre das so möglich?</p>
<pre><code class="language-cpp">class Verweis
{
private:
AndereKlasse* ptr;

public:
Verweis(AndereKlasse Objekt);
}

Verweis::Verweis(AndereKlasse Objekt)
{
ptr=AndereKlasse Objekt;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2170102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170102</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Thu, 19 Jan 2012 15:14:36 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 15:07:51 GMT]]></title><description><![CDATA[<p>Nein. Bitte schau dir doch erst die Grundlagen an..</p>
<pre><code class="language-cpp">class A
{
  B* p_;
public:
  A(B* p)
    : p_(p)
  {}
};
</code></pre>
<p>Bei dir wird im Konstruktor kein Pointer sondern ein Objekt übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170107</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 19 Jan 2012 15:07:51 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 15:31:22 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Nein. Bitte schau dir doch erst die Grundlagen an..</p>
<pre><code class="language-cpp">class A
{
  B* p_;
public:
  A(B* p)
    : p_(p)
  {}
};
</code></pre>
<p>Bei dir wird im Konstruktor kein Pointer sondern ein Objekt übergeben.</p>
</blockquote>
<p>Ich hab nur leider im Moment keine Zeit mich noch groß mit Grundlagen zu beschäftigen, da ich das Projekt an dem ich sitze bis 31. Januar abgegeben haben muss.<br />
Also hab das richtig verstanden, dass ich als Argument an den Konstruktor einen Pointer übergeben muss, der dann der entsprechenden Eigenschaft des erzeugten Objekts zugewiesen wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170116</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Thu, 19 Jan 2012 15:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 16:03:41 GMT]]></title><description><![CDATA[<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>Ich hab nur leider im Moment keine Zeit mich noch groß mit Grundlagen zu beschäftigen, da ich das Projekt an dem ich sitze bis 31. Januar abgegeben haben muss.</p>
</blockquote>
<p>Das ist hart. Ändert aber nichts daran dass du mit C++ nicht weit kommen wirst, wenn du von C++ nicht viel verstehst.</p>
<blockquote>
<p>Also hab das richtig verstanden, dass ich als Argument an den Konstruktor einen Pointer übergeben muss, der dann der entsprechenden Eigenschaft des erzeugten Objekts zugewiesen wird?</p>
</blockquote>
<p>Naja, das ist so ziemlich genau das, was du im ersten Beitrag gefordert hast, nur eine Spur technischer formuliert.<br />
Also ja, wenn es das ist was du brauchst, dann musst du das so machen.<br />
Wenn nicht, dann nicht, aber das können wir nicht wissen <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/2170125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170125</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 19 Jan 2012 16:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 16:16:16 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>Ich hab nur leider im Moment keine Zeit mich noch groß mit Grundlagen zu beschäftigen, da ich das Projekt an dem ich sitze bis 31. Januar abgegeben haben muss.</p>
</blockquote>
<p>Das ist hart. Ändert aber nichts daran dass du mit C++ nicht weit kommen wirst, wenn du von C++ nicht viel verstehst.</p>
</blockquote>
<p>Naja den Teil sollten eigentlich meine Projektpartner machen, da die aber wohl damit nicht klar gekommen sind, muss ich das jetzt irgendwie ausbügeln damit ich das Projekt noch fertig wird bis Abgabetermin.</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>Also hab das richtig verstanden, dass ich als Argument an den Konstruktor einen Pointer übergeben muss, der dann der entsprechenden Eigenschaft des erzeugten Objekts zugewiesen wird?</p>
</blockquote>
<p>Naja, das ist so ziemlich genau das, was du im ersten Beitrag gefordert hast, nur eine Spur technischer formuliert.<br />
Also ja, wenn es das ist was du brauchst, dann musst du das so machen.<br />
Wenn nicht, dann nicht, aber das können wir nicht wissen <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>
</blockquote>
<p>Ja das ist was ich brauche. Danke für deine Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170130</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Thu, 19 Jan 2012 16:16:16 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 19:49:11 GMT]]></title><description><![CDATA[<p>Ok ich hab noch einige Fehler. Die wohl alle mit den Pointern zusammenhängen, also schein da noch was nicht richtig verstanden zu haben, Syntaxfehler zu machen oder irgendwas nicht bedacht zu haben.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

#include &quot;GUI.h&quot;
#include &quot;buchung.h&quot;
#include &quot;Einzelzimmer.h&quot;
#include &quot;doppelzimmer.h&quot;
#include &quot;Kunde.h&quot;

void CGUI::applikation()
{
    int i, zwahl, rwahl, anDay, abDay;
    char Vname[30], Nname[30];

    vector&lt;CBuchung&gt; Buchungen;
    Hotelzimmer Einzelzimmer[30];
    Doppelzimmer Zimmer[20];
    vector&lt;CKunde&gt; Kunden;
    Hotelzimmer *pZimmer;
    CKunde *pKunde;

    for(i=0;i&lt;30;i++)
    {
        Einzelzimmer[i].set_Zimmernr(i+1);
    }

    for(i=0;i&lt;20;i++)
    {
        Zimmer[i].set_Zimmernr(i+1);
    }

    for(i=0;i&lt;5;i++)
    {
        Einzelzimmer[i].set_Raucherzimmer(true); //true=Raucherzimmer , false=Nichtraucher
        Zimmer[i].set_Raucherzimmer(true);
    }

    // Kundendaten
    cout &lt;&lt; &quot;Bitte geben Sie ihren Vornamen und Nachnamen ein.&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Vorname:&quot; &lt;&lt; endl;
    cin &gt;&gt; Vname[30];
    cout &lt;&lt; &quot;Nachname:&quot; &lt;&lt; endl;
    cin &gt;&gt; Nname[30];

    // Zimmerwunsch
    cout &lt;&lt; &quot;Wollen sie ein Einzel- oder Doppelzimmer?&quot; &lt;&lt; endl &lt;&lt; &quot;Geben sie 1 für Einzelzimmer und 2 für Doppelzimmer ein.&quot; &lt;&lt; endl;
    cin &gt;&gt; zwahl;
    cout &lt;&lt; &quot;Wollen sie ein Raucherzimmer?&quot; &lt;&lt; endl &lt;&lt; &quot;Geben sie 1 für Raucherzimmer und 2 für Nichtraucherzimmer ein.&quot; &lt;&lt; endl;
    cin &gt;&gt; rwahl;

    // Zeitraum abfragen
    cout &lt;&lt; &quot;Wann wollen sie anreisen?&quot; &lt;&lt; endl &lt;&lt; &quot;Geben sie eine Zahl zwischen 1 und 31 ein.&quot; &lt;&lt; endl;
    cin &gt;&gt; anDay;
    cout &lt;&lt; &quot;Wann wollen sie abreisen?&quot; &lt;&lt; endl &lt;&lt; &quot;Geben sie eine Zahl zwischen 1 und 31 ein.&quot; &lt;&lt; endl;
    cin &gt;&gt; abDay;

    if(Buchungen.size()==0) // aller erste Buchung auslösen
    {
        Kunden.push_back(CKunde(&amp;Vname[30], &amp;Nname[30]));
        pKunde=&amp;Kunden.front();
        if(zwahl==1)
        {
            if(rwahl==1)
            {
                pZimmer=&amp;Einzelzimmer[0];
            }
         else pZimmer=&amp;Einzelzimmer[5];
        }
        else if(rwahl==2)
            {
                pZimmer=&amp;Zimmer[0];
            }
            else pZimmer=&amp;Zimmer[5];
        Buchungen.push_back(CBuchung(&amp;anDay, &amp;abDay, pZimmer, pKunde));
    }

    // Testausgabe
    cout &lt;&lt; &quot;Ihre Buchung:&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Kundendaten: &quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Anreisetag: &quot; &lt;&lt; Buchungen.front().getanTag();
    cout &lt;&lt; &quot;Abreisetag: &quot; &lt;&lt; Buchungen.front().getabTag();

}
</code></pre>
<pre><code class="language-cpp">class CBuchung
{
    private:
        int anTag, abTag, anzahlTag;
        Hotelzimmer *Raum;
        CKunde *Customer;

    public:

        //Konstruktor
        CBuchung(int anDay, int abDay,Hotelzimmer *pZimmer,CKunde *pKunde);

        //Destruktor
        ~CBuchung();

        //setter
        void setanTag(int anDay);
        void setabTag(int abDay);

        //getter
        int getanTag();
        int getabTag();
        int getAnzahlTag();

};

CBuchung::CBuchung(int anDay, int abDay,Hotelzimmer *pZimmer,CKunde *pKunde)
{
    anTag=anDay;
    abTag=abDay;
    Raum=pZimmer;
    Customer=pKunde;
}
</code></pre>
<p>Folgende Fehler spuckt er mir aus:</p>
<blockquote>
<p>buchung.h|5|Fehler: »Hotelzimmer« bezeichnet keinen Typ|</p>
<p>buchung.h|6|Fehler: »CKunde« bezeichnet keinen Typ|</p>
<p>buchung.h|11|Fehler: »Hotelzimmer« wurde nicht deklariert|</p>
<p>buchung.h|11|Fehler: »CKunde« wurde nicht deklariert|</p>
<p>GUI.cpp|76|Fehler: keine passende Funktion für Aufruf von »CBuchung::CBuchung(int*, int*, Hotelzimmer*&amp;, CKunde*&amp;)«|</p>
<p>GUI.cpp|76|Anmerkung: Kandidaten sind:|</p>
<p>buchung.h|11|Anmerkung: CBuchung::CBuchung(int, int, int*, int*)|</p>
<p>buchung.h|11|Anmerkung: keine bekannte Umwandlung für Argument 3 von »Hotelzimmer*« nach »int*«|</p>
<p>buchung.h|1|Anmerkung: CBuchung::CBuchung(const CBuchung&amp;)|</p>
<p>buchung.h|1|Anmerkung: Kandidat erwartet 1 Argument, 4 angegeben|</p>
</blockquote>
<p>Was habe ich falsch gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170225</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Thu, 19 Jan 2012 19:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 21:47:09 GMT]]></title><description><![CDATA[<p>Damit du Typen (Klassen/Structs/Enums) verwenden kannst, musst du die erstmal bekannt machen (deklarieren).<br />
D.h. bevor du in CBuchung einen Zeiger auf ein Hotelzimmer machen kannst, musst du erstmal Hotelzimmer deklarieren.</p>
<p>Dazu kannst du entweder das entsprechende Header-File mit <code>#include &quot;Filename.h&quot;</code> reinholen, oder du machst ne fwd. declaration:</p>
<pre><code class="language-cpp">class Hotelzimmer;

class CBuchung
{
    private:
        int anTag, abTag, anzahlTag;
        Hotelzimmer *Raum;
// ...
</code></pre>
<p>Das selbe dann nochmal für CKunde.</p>
<p>Damit sollten alle Fehler behoben sein.</p>
<p>Tip: Die ersten 4 Fehler sind direkte Folge davon dass die Typen nicht deklariert wurden. Und der 5. Fehler ist ein Folgefehler.<br />
Da du unbekannte Typen bei der Deklaration des Konstruktors CBuchung::CBuchung verwendet hast, hat der Compiler die einfach mal durch &quot;int&quot; ersetzt. Damit er irgendwie weiter machen kann.<br />
Daher kommt das &quot;CBuchung::CBuchung(int, int, int*, int*)&quot; in der Anmerkung, obwohl so eine Funktion in deinem Programm gar nicht vorkommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170287</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 19 Jan 2012 21:47:09 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Thu, 19 Jan 2012 22:06:40 GMT]]></title><description><![CDATA[<p>Gut danke das war Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2170292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170292</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Thu, 19 Jan 2012 22:06:40 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Sun, 22 Jan 2012 00:14:00 GMT]]></title><description><![CDATA[<p>Ok ich hab dann noch zwei kleine Fragen. Kann ich mir die Pointer so zurückgeben lassen?</p>
<pre><code class="language-cpp">int CBuchung::getRaum(){

    return Raum;

}
</code></pre>
<p>Da ja der Pointer auf ein Objekt zeigt, kann dann so darauf zurückgreifen?</p>
<pre><code class="language-cpp">Buchungen.getRaum()-&gt;get_Zimmernr();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2170990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170990</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Sun, 22 Jan 2012 00:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Sun, 22 Jan 2012 05:35:47 GMT]]></title><description><![CDATA[<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>Kann ich mir die Pointer so zurückgeben lassen?</p>
<pre><code class="language-cpp">int CBuchung::getRaum(){

    return Raum;

}
</code></pre>
</blockquote>
<p>Technisch gesehen: Jein. Was (welchen Typ) soll <code>getRaum()</code> zurückgeben? Anders gefragt: welchen Typ hat <code>CBuchung::Raum()</code> ?</p>
<p>Ästhetisch gesehen: NEIN!<br />
1. Siehe Datenkapselung.<br />
2. Eine Buchung kann keinen Raum haben höchstens eine Zimmernummer.<br />
3. ...</p>
<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>Da ja der Pointer auf ein Objekt zeigt, kann dann so darauf zurückgreifen?</p>
<pre><code class="language-cpp">Buchungen.getRaum()-&gt;get_Zimmernr();
</code></pre>
</blockquote>
<p>Technisch gesehen: <em>Wenn</em> der Rückgabewert von <code>getRaum()</code> vom Typ Zeiger auf einen Raum ist und Raum die Methode <code>get_Zimmernr()</code> hat: Ja.</p>
<p>Was habt ihr denn als Vorgabe bekommen (möglichst Wortlaut bzw. pdf)? Ohne genau zu wissen was das Ding wenns fertig ist leisten soll:</p>
<p>Wir verwalten ein Hotel.<br />
Unser Hotel <em>hat mehrere</em> Zimmer.<br />
Jedes Zimmer <em>hat eine</em> Nummer.<br />
Jedes Zimmer <em>hat eine</em> Anzahl an Betten.<br />
Unser Hotel <em>hat mehrere</em> Kunden.<br />
Ein Kunde <em>hat eine</em> Nummer.<br />
Unser Hotel [i]hat ein[i] Buch in dem Buchungen aufgenommen werden.<br />
Eine Buchung besteht aus Zeitraum, Kundennummer und Zimmernummer.</p>
<p>Hat man eine derartige Überlegung angestellt darf man beginnen mit og. Objekten herumzuspielen <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/2171005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171005</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 22 Jan 2012 05:35:47 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Sun, 22 Jan 2012 12:18:07 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>Kann ich mir die Pointer so zurückgeben lassen?</p>
<pre><code class="language-cpp">int CBuchung::getRaum(){

    return Raum;

}
</code></pre>
</blockquote>
<p>Technisch gesehen: Jein. Was (welchen Typ) soll <code>getRaum()</code> zurückgeben? Anders gefragt: welchen Typ hat <code>CBuchung::Raum()</code> ?</p>
<p>Ästhetisch gesehen: NEIN!<br />
1. Siehe Datenkapselung.<br />
2. Eine Buchung kann keinen Raum haben höchstens eine Zimmernummer.<br />
3. ...</p>
</blockquote>
<p>Also Pointer ist in der Klasse so deklariert wie weiter oben auch ersichtlich:</p>
<pre><code class="language-cpp">Hotelzimmer *Raum
</code></pre>
<p>Wie kann ich mir diesen dann zurückgeben lassen oder wie könnte ich mir das zurückgeben lassen auf was er zeigt?</p>
<p>Swordfish schrieb:</p>
<blockquote>
<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>Da ja der Pointer auf ein Objekt zeigt, kann dann so darauf zurückgreifen?</p>
<pre><code class="language-cpp">Buchungen.getRaum()-&gt;get_Zimmernr();
</code></pre>
</blockquote>
<p>Technisch gesehen: <em>Wenn</em> der Rückgabewert von <code>getRaum()</code> vom Typ Zeiger auf einen Raum ist und Raum die Methode <code>get_Zimmernr()</code> hat: Ja.</p>
</blockquote>
<p>Ja so ist es.</p>
<p>Swordfish schrieb:</p>
<blockquote>
<p>Was habt ihr denn als Vorgabe bekommen (möglichst Wortlaut bzw. pdf)? Ohne genau zu wissen was das Ding wenns fertig ist leisten soll:</p>
<p>Wir verwalten ein Hotel.<br />
Unser Hotel <em>hat mehrere</em> Zimmer.<br />
Jedes Zimmer <em>hat eine</em> Nummer.<br />
Jedes Zimmer <em>hat eine</em> Anzahl an Betten.<br />
Unser Hotel <em>hat mehrere</em> Kunden.<br />
Ein Kunde <em>hat eine</em> Nummer.<br />
Unser Hotel [i]hat ein[i] Buch in dem Buchungen aufgenommen werden.<br />
Eine Buchung besteht aus Zeitraum, Kundennummer und Zimmernummer.</p>
<p>Hat man eine derartige Überlegung angestellt darf man beginnen mit og. Objekten herumzuspielen <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>
</blockquote>
<p>Wir hatten uns eine Aufgabenstellung aus dem Internet genommen von dieser <a href="http://www.highscore.de/cpp/aufbau/uebungen.html" rel="nofollow">Seite</a>. Sie hat keine konkreten Vorgaben gemacht.</p>
<blockquote>
<p>Erstellen Sie ein Objektmodell für folgende Aufgabenstellung: Ein Hotel hat 50 Zimmer, davon 30 Einzel- und 20 Doppelzimmer. Für das Abwickeln von Reservierungen muss jeweils ein freies Einzel- oder Doppelzimmer gefunden und für einen Gast gebucht werden. Ist ein Zimmer gebucht, darf es nicht als frei angezeigt werden, wenn ein anderer Gast ein Zimmer buchen möchte. Da viele Gäste Nichtraucherzimmer bevorzugen, sind 25 Einzel- und 15 Doppelzimmer Nichtraucherzimmer. Bei der Reservierung eines Zimmers kann ein Gast angeben, ob er in einem Raucher- oder Nichtraucherzimmer übernachten möchte.</p>
<p>Implementieren Sie Ihr Objektmodell und lassen Sie mehrere Gäste in Ihrem Hotel in der Funktion main() Zimmer reservieren. Zeigen Sie zur Kontrolle am Ende Ihres Programms die Anzahl der freien Zimmer an.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2171072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171072</guid><dc:creator><![CDATA[Cyborgeagle]]></dc:creator><pubDate>Sun, 22 Jan 2012 12:18:07 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu Pointer (soll auf Objekt anderer Klasse zeigen) on Sun, 22 Jan 2012 16:50:58 GMT]]></title><description><![CDATA[<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>Also Pointer ist in der Klasse so deklariert wie weiter oben auch ersichtlich:</p>
<pre><code class="language-cpp">Hotelzimmer *Raum
</code></pre>
<p>Wie kann ich mir diesen dann zurückgeben lassen [...]</p>
</blockquote>
<p>Naja, deine <code>int CBuchung::getRaum()</code> gibt - wie sie oben steht einen Wert vom Typ <code>int</code> zurück. <code>CBuchung::Raum</code> ist aber vom Typ <code>Hotelzimmer*</code> .</p>
<p>Cyborgeagle schrieb:</p>
<blockquote>
<p>oder wie könnte ich mir das zurückgeben lassen auf was er zeigt?</p>
</blockquote>
<p>Das willst Du nicht bzw. noch weniger.</p>
<p>Swordfish schrieb:</p>
<blockquote>
<p>Wir hatten uns eine Aufgabenstellung aus dem Internet genommen [...]</p>
</blockquote>
<p>Dafür brauchst Du nichtmal einen blanken Pointer...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171172</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 22 Jan 2012 16:50:58 GMT</pubDate></item></channel></rss>