Achim A. schrieb:
> Hallo
>
> ist das nicht was anderes, was ich anstrebe.
Inwiefern
> EXX ist eine fremde Klasse
> und kann in einem Scetch problemlos angelegt werden.
Wie ich diesen Begriff hasse.
Du programmierst C++ und nicht irgendwelche Scetche.
Also gelten für dich die Sprachregeln von C++.
> Es ist aus meiner
> Sicht ein neuer Datentyp also wie float, int etc. nur eben EXX.
Ja, passt ja auch
>
> ...EXX test(10) ; im Scetch problemlos anlegbar
Ja, weil das eine Variable, ein Objekt für sich selbst ist. Und dem kann
man bei der Objekterzeugung einen Initalwert mitgeben.
genauso, wie du in einer FUnktion
1 | void foo()
|
2 | {
|
3 | int i(5);
|
4 | }
|
einen int anlegst, der bei der Erzeugung intialisiert wird, genauso
kannst du auch irgendein anderes Objekt anlegen
1 | void foo()
|
2 | {
|
3 | EXX obj(5);
|
4 | }
|
und es bei der Erzeugung mit einem Wert initialisieren.
>
> Ich möchte das aber meiner Klasse anlegen....
>
Ja, dann mach das.
> Ich möchte meine Klasse nicht von EXX ableiten (MEINE() : EXX(10))
tust du ja auch nicht. Du solltest dein C++ Buch nicht nur anlassbezogen
zu Rate ziehen, sondern es mal von vorne bis hinten durcharbeiten, damit
du zumindest die Syntax erkennst, wenn du sie vorgebetet bekommst.
> und
> schon gar nicht einen neuen Konstruktor definieren.
doch. Das wirst du aber müssen.
Denn genau das ist der in C++ vorgesehene Mechanismus, mit dem ein
Objekt seine Member initialisiert.
> Ich möchte das wie ne float oder int als private Membervariable anlegen
> und nutzen.
Und?
Wie initialisiert man denn eine Membervariable eines Objektes?
schreibst du
1 | class meine
|
2 | {
|
3 | int i_( 5 );
|
4 | };
|
oder schreibst du
1 | class meine
|
2 | {
|
3 | meine() : i_( 5 ) {}
|
4 |
|
5 | int i_;
|
6 | };
|
und mit anderen Datentypen ist das auch nicht anders.
Noch ein Hinweis:
Eine Klassendeklaration definiert ja noch kein Objekt. Eine
Klassendeklaration ist ja nur ein Bauplan, wie ein Objekt aussehen soll.
Objekte werden zb in Funktionen erzeugt
1 | void foo()
|
2 | {
|
3 | meine jkl;
|
4 | }
|
und erst da erwacht dann der Mechanismus zum Leben.
Aber mit
1 | class meine
|
2 | {
|
3 | ...
|
4 |
|
5 | EXX mem;
|
6 | };
|
beschreibst du ja nur, wie so ein 'meine' Objekt prinzipiell aussieht.
Aber du hast deswegen ja noch kein derartiges Objekt. Erzeugt wird ein
derartiges Objekt erst hier
1 | void foo()
|
2 | {
|
3 | meine jkl;
|
4 | }
|
und 'Objekt erzeugen' bedeutet, dass ein Konstruktor abläuft. Daher ist
der Konstruktor der Code-Platz an der dieses Objekt dann seinerseits
seine Member initialisiert.