Im Konstruktor Variablen erstellen

HackerNeo

Mitglied
Hallo Leute,

ich suche eine Möglichkeit innerhalb des Konstruktors einer Klasse Variablen zu definieren, die ich dann innerhalb der komplette Klasse ansprechen kann. Ich möchte diese Variablen ungern vorher schon in der Klasse als public deklarieren, weil ich im Konstruktor gleich Werte für die Definition benutzen möchte.

Gibt es soeine Möglichkeit?

Danke schonmal
 

vfl_freak

Premium-User
Moin,

ähh ... meinst du sowas :confused:
Code:
CMeineKlasse::CMeineKlasse( int iInteger )
{
    int iLocal = 0;
    iLocal = iInteger + 5;

    // .....

} // CMeineKlasse

Gruß
Klaus
 

vfl_freak

Premium-User
Moin,

na, das geht doch im Prinzip genau so (über eine lokale Variable):

Code:
// HEADER:

class CMeineKlasse 
{
    private:
        int iIntegerLocal = 0;

    public:
        CMeineKlasse();
        virtual ~CMeineKlasse();
        CMeineKlasse( int iValue );
    
        int fMeineFunktion();
    // ...
}

------------------------------------------

// CPP:

CMeineKlasse::CMeineKlasse();
CMeineKlasse::~CMeineKlasse();
CMeineKlasse::CMeineKlasse( int iValue )
{
    iIntegerLocal = iValue
} // CMeineKlasse

int CMeineKlasse::fMeineFunktion();
{
    int iLokaleVAR = 0;
    iLokaleVAR = iIntegerLocal;
    // ...
    iLokaleVAR += 50;
    return iLokaleVAR;
}

------------------------------------------

// Aufruf in anderer Klasse:
int i = 100;
CMeineKlasse objMeineKlasse( i ); 
int iNeu = objMeineKlasse.fMeineFunktion();

// Ausgabe iNeu = 150 ! :-)

Ist nur ein Beispiel und VHIDT :)

Gruß
Klaus
 
Zuletzt bearbeitet:

HackerNeo

Mitglied
nene ihr versteht mich falsch.

ich möchte eine variable im Konstruktor deklarieren und definieren und diese dann aber in den anderen methoden der klasse zu verfügung haben...

Code:
// HEADER:

class CMeineKlasse 
{
    public:
        CMeineKlasse();
        virtual ~CMeineKlasse();
        CMeineKlasse( int iValue );
    
        int fMeineFunktion();
    // ...
}

------------------------------------------

// CPP:

CMeineKlasse::CMeineKlasse();
CMeineKlasse::~CMeineKlasse();
CMeineKlasse::CMeineKlasse( int iValue )
{
    int iIntegerLocal = iValue
} // CMeineKlasse

int CMeineKlasse::fMeineFunktion();
{
    int iLokaleVAR = 0;
    iLokaleVAR = iIntegerLocal;
    // ...
    return iLokaleVAR;
}

------------------------------------------

// Aufruf in anderer Klasse:
int i = 100;
CMeineKlasse objMeineKlasse( i );

In dieser Form...
 

vfl_freak

Premium-User
ääh ... und in welcher jetzt :confused::confused:
Da hast Doch augenscheinlich nur meinen Code zurück gepostet .....

Ich übergebe den Wert im Konstruktor und schreibe ihn auf eine lokale Variable, die dann klassenweit (und ggf. eben auch von außerhalb) genutzt werden kann ! !

Wo genau ist jetzt Dein Problem :confused:

Gruß
Klaus
 

HackerNeo

Mitglied
hehe ich habe die variable nicht in der klasse selbst, sondern nur im konstruktor deklariert.

ich will die var nicht also public oderso vorher in der klasse deklarieren müssen....
 

vfl_freak

Premium-User
hehe ich habe die variable nicht in der klasse selbst, sondern nur im konstruktor deklariert.
ok, das sehe ich dann hier nicht, da ist wohl schiefgelaufen .....

ich will die var nicht also public oderso vorher in der klasse deklarieren müssen....
Du wirst den Wert aus dem Konstruktor schon an eine lokale VAR übergeben müssen, wenn Du sie in anderen Funktionen nutzen willst!
Das hängt mit dem Gültigkeitsbereich von VAR zusammen (!)

Im Sinne der OO ist es ja eine Eigenschaft der Klasse (event. Getter und Setter kannst weglassen, wenn nur innerhalb der Klasse genutzt werden soll! :p

Wo ist denn dabei Dein Problem

Gruß
Klaus
 

HackerNeo

Mitglied
ok, dumm gelaufen.

gibt es dann die möglichkeit innerhalb einer schleife in der main funktion deine variable zu deklarieren und definieren, die ich dann aber in der desamten main zur verfügung habe?
 

vfl_freak

Premium-User
also sowas ?
Code:
CMeineKlasse::CMeineKlasse( int iValue )
{
} // CMeineKlasse

int CMeineKlasse::main( ... );
{
    int iLokaleVAR = iValue;
    // ...
    return 0;
}
:confused:

Nein, da iValue dann nur im Konstruktor gültig ist.
Deswegen ja der zuvor von mir beschriebene Umweg über eine Instanz-VAR! Das ist halt in der OOP so ;-]

Gruß
Klaus
 

Neue Beiträge