Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Referenzen als Member

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
27.07.2007, 09:09 Uhr
Pler
Einer von Vielen
(Operator)


Jetzt mal unabhänig vom Sinn des ganzen: wie soll ich das machen?
Ich möchte doch nur in meiner Klasse Membervariablen, die Referenzen sind. Setzen kann man die doch natürlich erst im Konstruktor. (Klasse B)


gcc:

$ make versuch
g++     versuch.cpp   -o versuch
versuch.cpp: In constructor ‘B::B(Zwei&)’:
versuch.cpp:18: error: uninitialized reference member ‘B::zwei’




C++:
class Eins{
    int a;
    int b;
};

class Zwei {
    Eins eins;
public:
    int c;
};

class B{
public:
    Zwei &zwei;
    B(Zwei &zwei);
};

B::B(Zwei &zwei) {
    this->zwei = zwei;
};

int main()
{
    Zwei zwei;
    zwei.c = 10;
    B b(zwei);

    std::cout << b.zwei.c << std::endl;

    return 0;
}



Danke

Dieser Post wurde am 27.07.2007 um 09:10 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.07.2007, 09:51 Uhr
Tommix



Hallo,
dafür gibt's die Initialisierungsliste:

C++:
B::B(Zwei& zwei_): zwei(zwei_)
{
}



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.08.2007, 21:39 Uhr
Pler
Einer von Vielen
(Operator)


hm. Also entweder ich check die nicht, oder die macht auch nicht, was ich möchte:


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

class Eins {
public:
        int i;
};

class Zwei {
public:
        Eins eins;
        Zwei(Eins& eins);
};

Zwei::Zwei(Eins& eins_) : eins(eins_)
{
}

int main ()
{
        Eins eins;
        eins.i = 42;

        Zwei zwei(eins);

        std::cout << zwei.eins.i << std::endl;

        eins.i = 4711;

        std::cout << zwei.eins.i << std::endl;

        return 0;
}


Ausgabe:

bash:

$ ./versuch
42
42



Eigentlich sollte 42 und 4711 ausgegeben werden.

Dieser Post wurde am 26.08.2007 um 21:41 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.08.2007, 21:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
class Zwei {
public:
        Eins eins;
        Zwei(Eins& eins);
};


da kopierste ja - du hast das & vergessen!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.08.2007, 21:43 Uhr
Pler
Einer von Vielen
(Operator)


Blitzantwort?

Was meinst du? Steht doch da.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.08.2007, 21:45 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
class Zwei {
public:
        Eins eins; ///<--- DA!
        Zwei(Eins& eins);
};


--
class God : public ChuckNorris { };

Dieser Post wurde am 26.08.2007 um 21:45 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.08.2007, 21:47 Uhr
Pler
Einer von Vielen
(Operator)


Ach verdammt. Das meinst du:


C++:
class Zwei {
public:
        Eins& eins;
        Zwei(Eins& eins);
};



Geht wirklich.
Das hatte ich auch so geschrieben. Aber bei mir ging das nicht. (Also in dem richtigen Code, das hier ist ja nur das vereinfachte Beispiel. Und da habe ich das gar nicht noch mal probiert)


Nachtrag:
@Flo habs schon verstanden!
Is ja auch schon spät

Dieser Post wurde am 26.08.2007 um 21:49 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.08.2007, 21:52 Uhr
Pler
Einer von Vielen
(Operator)


Wah! Ich könnt weinen.
Ich hatte die ganze Zeit so ein & vor eine Variable geschrieben, die gar nicht durch den Konstruktor initialisiert werden soll.

Gute Nacht!


Und Danke noch an euch!
 
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: