Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » initialisierungsliste

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.06.2005, 13:44 Uhr
cmos



ICh hab da 2 Klassen. Vater erbt von Mensch.

C++:
class Mensch
{
    private:
        int m_Alter;

    protected:
        void SetAlter(int a)
        {
            m_Alter=a;
        }
    
    public:
        Mensch(int iAlter):m_Alter(iAlter){}
};

class Vater:public Mensch
{
    private:
        Mensch& m_Kind;
    
    public:
        Vater(Mensch& k):m_Kind(k),Mensch(??)
        {}
};


Nun hab ich gelesen das der Konstruktor der Basisklasse auch in der
abgeleiteten mit aufgerufen werden muss.
Bekomme immer Fehlermeldungen. Mal sinds 12 Fehler mal nur 2.. kommt drauf an
wie ich die Initialisierungsliste in class Mensch "gestalte"
Kann mir bitte jemand helfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.06.2005, 16:17 Uhr
Spacelord
Hoffnungsloser Fall



C++:
#include <iostream>
using namespace std;

class Mensch
{
    private:
        int m_Alter;

    protected:
        void SetAlter(int a)
        {
            m_Alter=a;
        }
    
    public:
        Mensch(int iAlter):m_Alter(iAlter){}
        const int alter()const{return m_Alter;}
};

class Vater:public Mensch
{
    private:
        Mensch& m_Kind;
    
    public:
        Vater(Mensch& k,int alter):Mensch(alter),m_Kind(k){};
        const Mensch kind()const{return m_Kind;}
};

int main()
{
    Mensch child(12);
    Vater papa(child,34);
    cout<<papa.alter()<<endl;
    cout<<papa.kind().alter()<<endl;
    
    return 0;
}




Im Grunde kannst du jedes Verwandschaftsverhältnis (nur) mit der Klasse Mensch nachbilden!
Sofern du der Klasse Mensch Referenzen oder Zeiger auf andere Mensch Objekte verpasst mit denen du die Assoziationen ElternteilVon und VerheiratetMit abbilden kannst sind alle weiteren Verwandschaftsverhältnisse ableitbar.

Denk mal darüber nach.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 19.06.2005 um 16:18 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.06.2005, 16:34 Uhr
cmos



Danke,
muss das erstmal nachvollziehen. Sieht fast aus wie das wa ich gepostet habe, nur das deine Initliste funktioniert. Danke.
Was sagt diese const nach der Funktion aus ?

C++:
const Mensch kind()const...



Danke,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.06.2005, 17:09 Uhr
Spacelord
Hoffnungsloser Fall


Das const sagt dem Compiler dass diese Methode das Objekt,für das die Methode aufgerufen wird, nicht verändert.Das ist z.B. dann wichtig wenn du ein Objekt hast das selber const ist. Wenn die Methode nicht als const deklariert wäre könntest du die nicht für ein const Objekt aufrufen(selbst wenn die Methode das Objekt nicht verändern würde).
Wenn also eine Methode dein Objekt nicht verändert mach diese const,ansonsten schränkst du dich selber ein.
Mit der const Geschichte ist es aber so ne Sache.Für den Compiler ist eine Methode const wenn das Objekt nach dem Aufruf immer noch bitweise gleich zu dem Stand vor dem Aufruf ist.Wenn du jetzt aber Zeiger als Attribute hast wird nur geprüft ob der Zeiger gleich geblieben ist und nicht ob der "Inhalt" der hinter dem Zeiger steht noch gleich ist.
Es ist also nicht wirklich alles const wo const dran steht .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.06.2005, 18:00 Uhr
(un)wissender
Niveauwart



Zitat von Spacelord:

Für den Compiler ist eine Methode const wenn das Objekt nach dem Aufruf immer noch bitweise gleich zu dem Stand vor dem Aufruf ist.



Das ist so nicht ganz richtig. Schau dir mal mutable an...
Und const ist ganz genau const, eben nach der Definition.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.06.2005, 19:48 Uhr
Spacelord
Hoffnungsloser Fall


Der Einwand mit mutable ist natürlich berechtigt .Diesen "Sonderfall" hatte ich wohl verdrängt .
Sollte für cmos im Augenblick aber auch noch nicht sooo interessant sein.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.06.2005, 19:57 Uhr
cmos



Ja, ist nicht sooo wichtig. Zumal ich nicht weiß was das ist.
aber trotzdem Danke.
Funktioniert jetzt alles soweit.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: