<?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[Zugriff auf vererbte variablen]]></title><description><![CDATA[<p>Hallo, folgendes Beispiel: (ja ich weiß sinnlos, nur zur Veranschaulichung)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

namespace Buildings
{
    class Building
    {
    protected:
        std::string _date;

    public:
        Building(void)
        {}

        Building(std::string const date) :
          _date(date)
        {}

        Building(Building const &amp; same_building) :
          _date(same_building._date)
        {}

        virtual ~Building()
        {}
    };

    class House : public Building
    {
    private:
        int _waende;

    public:
        House() : 
          _waende(0)
        {
        }   

        House(int const waende, std::string const date) : 
          _waende(waende)
        { 
            this-&gt;_date = date;
        }

        House(House const &amp; same_house) :
          _waende(same_house._waende)
        {                  
            this-&gt;_date = same_house._date;
        }

        ~House()
        { 
        }

        House &amp; operator=(House const &amp; same_house)
        {      
            this-&gt;_date = same_house._date;
            this-&gt;_waende = same_house._waende;
            return *this;  
        }

        int get(void) const
        {
            return this-&gt;_waende;    
        }

        std::string getdate(void) const
        {
            return this-&gt;_date;            
        }
    };

    std::ostream&amp; operator&lt;&lt;(std::ostream&amp; Stream, House const &amp; house)
    {
        return Stream &lt;&lt; &quot;Das Haus hat &quot; &lt;&lt; house.get() &lt;&lt; &quot; Waende und ist am &quot; &lt;&lt; house.getdate() &lt;&lt; &quot; gebaut worden!&quot;;           
    }
};

int main(void)
{
    Buildings::House WhiteHouse;
    Buildings::House TmpHouse(10, &quot;21.4.1955&quot;);

    WhiteHouse = TmpHouse;

    std::cout &lt;&lt; WhiteHouse &lt;&lt; std::endl;

    system(&quot;PAUSE&quot;);
    return 0;
}
</code></pre>
<p>Wenn ich im Copy-Ctor vererbte Variablen mit einem Wert setzen will, kann man die iwie in der Initialisierungsliste definieren ? Bei mir gibst nen Compile-Fehler wenn ich folgendes versuche:</p>
<pre><code class="language-cpp">House(int const waende, std::string const date) : 
          _waende(waende), _date(date) //_date ist vererbt
        { 
        }
</code></pre>
<p>Klar man kann es auch einfach in die gescheiften Klammern schreiben, aber muss ja nicht sein wenns auch anders geht...</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205874/zugriff-auf-vererbte-variablen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 03:22:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205874.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Feb 2008 21:45:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Mon, 18 Feb 2008 21:45:42 GMT]]></title><description><![CDATA[<p>Hallo, folgendes Beispiel: (ja ich weiß sinnlos, nur zur Veranschaulichung)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

namespace Buildings
{
    class Building
    {
    protected:
        std::string _date;

    public:
        Building(void)
        {}

        Building(std::string const date) :
          _date(date)
        {}

        Building(Building const &amp; same_building) :
          _date(same_building._date)
        {}

        virtual ~Building()
        {}
    };

    class House : public Building
    {
    private:
        int _waende;

    public:
        House() : 
          _waende(0)
        {
        }   

        House(int const waende, std::string const date) : 
          _waende(waende)
        { 
            this-&gt;_date = date;
        }

        House(House const &amp; same_house) :
          _waende(same_house._waende)
        {                  
            this-&gt;_date = same_house._date;
        }

        ~House()
        { 
        }

        House &amp; operator=(House const &amp; same_house)
        {      
            this-&gt;_date = same_house._date;
            this-&gt;_waende = same_house._waende;
            return *this;  
        }

        int get(void) const
        {
            return this-&gt;_waende;    
        }

        std::string getdate(void) const
        {
            return this-&gt;_date;            
        }
    };

    std::ostream&amp; operator&lt;&lt;(std::ostream&amp; Stream, House const &amp; house)
    {
        return Stream &lt;&lt; &quot;Das Haus hat &quot; &lt;&lt; house.get() &lt;&lt; &quot; Waende und ist am &quot; &lt;&lt; house.getdate() &lt;&lt; &quot; gebaut worden!&quot;;           
    }
};

int main(void)
{
    Buildings::House WhiteHouse;
    Buildings::House TmpHouse(10, &quot;21.4.1955&quot;);

    WhiteHouse = TmpHouse;

    std::cout &lt;&lt; WhiteHouse &lt;&lt; std::endl;

    system(&quot;PAUSE&quot;);
    return 0;
}
</code></pre>
<p>Wenn ich im Copy-Ctor vererbte Variablen mit einem Wert setzen will, kann man die iwie in der Initialisierungsliste definieren ? Bei mir gibst nen Compile-Fehler wenn ich folgendes versuche:</p>
<pre><code class="language-cpp">House(int const waende, std::string const date) : 
          _waende(waende), _date(date) //_date ist vererbt
        { 
        }
</code></pre>
<p>Klar man kann es auch einfach in die gescheiften Klammern schreiben, aber muss ja nicht sein wenns auch anders geht...</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458513</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Mon, 18 Feb 2008 21:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 03:13:15 GMT]]></title><description><![CDATA[<p>du musst den konstruktor der basisklasse verwenden:</p>
<pre><code class="language-cpp">House(int const waende, std::string const date) :
          Building(date), _waende(waende) //_date ist vererbt
        {
        }
</code></pre>
<p>überlege dir auch, ob du nich die implementation der copy-ctoren, von operator= und von ~House deinem compiler überlassen willst.</p>
<p>generell gilt ist es schlecht, namen mit underscores beginnen zu lassen (besser gar nicht erst damit anfangen) und elementvariablen von klassen <code>protected</code> zu halten, ist auch kein guter stil.</p>
<p>/PS: beachte bei der elementinitialisierungsliste außerdem die einhaltung der reihenfolge: basisklassen und datenmember in der reihenfolge ihrer deklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458548</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Tue, 19 Feb 2008 03:13:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 06:04:18 GMT]]></title><description><![CDATA[<p>warum sollte man die die sachen die du genannt hast dem compiler überlassen ?<br />
ic hdachte: wenn man einen macht sollte man alle machnen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458555</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Tue, 19 Feb 2008 06:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 06:24:38 GMT]]></title><description><![CDATA[<p>und wenn du keinen der drei brauchst, dann keinen.</p>
<p>btw., es geht hier um den kopierkonstruktor, den (kopier-)zuweisungsoperator und den destruktor.</p>
<p>in diesem fall, machen die compiler-generierten versionen genau das, was du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458558</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Tue, 19 Feb 2008 06:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 13:50:37 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;string&gt;

namespace Buildings
{
    class Building
    {
    protected:
        std::string m_date;

    public:
        Building(std::string const&amp; date(&quot;&quot;))
            : m_date(date)
        {}

        friend std::ostream&amp; operator &lt;&lt; (std::ostream&amp; out, Building const&amp; data)
        { return out &lt;&lt; &quot;Erbaut am &quot; &lt;&lt; data.m_date; }

    public:
        std::string const&amp; get_date() const { return m_date; }

    };

    class House : public Building
    {
        unsigned int m_walls;

    public:
        House(const unsigned int walls(0), std::string const&amp; date(&quot;&quot;)) 
            : Building(data), m_walls(walls) 
        {}  

        friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; Stream, House const &amp; data)
        { return out &lt;&lt; &quot;Das Haus hat &quot; &lt;&lt; data.m_walls &lt;&lt; &quot; Wände und wurde am &quot; &lt;&lt; data.m_date &lt;&lt; &quot; erbaut!&quot;; } 

    public:
        const unsigned int get_walls() const { return m_walls; }
    };
}; // Buildings
</code></pre>
<p><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/1458870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458870</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 19 Feb 2008 13:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 13:55:18 GMT]]></title><description><![CDATA[<p>diese doppelte &quot;public&quot; in der Klassen Definition ist nur fürs Aussehen oder ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458872</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Tue, 19 Feb 2008 13:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 15:22:56 GMT]]></title><description><![CDATA[<p>Foxx90 schrieb:</p>
<blockquote>
<p>diese doppelte &quot;public&quot; in der Klassen Definition ist nur fürs Aussehen oder ?</p>
</blockquote>
<p>Du kannst prinzipiell vor jeden Bestandteil erneut die Sichtbarkeit festlegen, daher macht dies nichts aus (Manche Codegeneratoren machen dies z.B.).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1458930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1458930</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 19 Feb 2008 15:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 17:35:28 GMT]]></title><description><![CDATA[<p>Ok alles klar danke</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459007</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Tue, 19 Feb 2008 17:35:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 18:10:40 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>generell gilt ist es schlecht, namen mit underscores beginnen zu lassen (besser gar nicht erst damit anfangen) und elementvariablen von klassen <code>protected</code> zu halten, ist auch kein guter stil.</p>
</blockquote>
<p>Ansichtssache. So lange man sich nicht im globalen Namensraum rumtreibt und der zweite Buchstabe kein Großbuchstabe ist <a href="http://www.kuzbass.ru:8086/docs/isocpp/lib-intro.html#lib.global.names" rel="nofollow">erlaubt der Standard das</a>. Ich finds hübscher als mPups.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459037</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 19 Feb 2008 18:10:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 19:23:47 GMT]]></title><description><![CDATA[<p>was sollen denn die friends in der klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459078</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Tue, 19 Feb 2008 19:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 19:42:43 GMT]]></title><description><![CDATA[<p>Dadurch hat er verhindert, die operatoren &lt;&lt; &gt;&gt; außerhalb der Klasse zu definieren bzw. deklarieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459094</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Tue, 19 Feb 2008 19:42:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 22:11:40 GMT]]></title><description><![CDATA[<p>.....</p>
<p>ps: wir habens probiert nach vielen fehlern.. es geht.. hmm</p>
<p>na, gut zu wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459155</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Tue, 19 Feb 2008 22:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf vererbte variablen on Tue, 19 Feb 2008 22:18:04 GMT]]></title><description><![CDATA[<p>ging mir auch so...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1459164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1459164</guid><dc:creator><![CDATA[Foxx90]]></dc:creator><pubDate>Tue, 19 Feb 2008 22:18:04 GMT</pubDate></item></channel></rss>