[gelöst] Referenz (auf andere Membervariable) als Membervariable



  • Hallo allerseits!

    Ich würde gerne eine Referenz auf eine Membervariable als Membervariable anlegen.
    Etwa so:

    class Klasse
    {
    ...
    private:
        short a;
        short& b=a; //auf diese Zeile beziehen sich die Error
    }
    

    dann hagelt es allerdings Compilerfehler:

    error C2327: 'Klasse::a' : is not a type name, static, or enumerator
    error C2065: 'a' : undeclared identifier
    error C2864: 'Klasse::b' : only static const integral data members can be initialized within a class

    Wie kann ich das vermeiden?

    (Ich habe bereits versucht, b außerhalb des Headers zu initialiseren, allerdings bisher nicht erfolgreich...)

    [Sinn der Sache ist übrigens ganz banal, dass durch zwei verschiedene Namen (natürlich nicht a und b 😉 ) zwei verschiedene Aspekte der Funktion der Variable ausgedrückt werden sollen.]

    Danke und Gruß,
    Dong



  • Hi!

    In der Initialisierungsliste musst du das machen:

    class Klasse
    {
    ...
    private:
        short a;
        short& b; 
    
    public:
        Klasse() : b( a )
        {}
    };
    

    Alternativ wäre das mit einem union machbar:

    class Klasse
    {
    ...
    private:
        union 
        {
          short a;
          short b; 
        };
    }
    

    grüße



  • Danke! 🙂


Anmelden zum Antworten