passender Kopierkonstruktor gesucht


  • Mod

    camper schrieb:

    direkter Zugriff auf t erfordert eine zusätzliche friend-Deklaration, sonst kann dieser Konstruktor nur für U=T verwendet werden

    FTFY



  • Arcoth schrieb:

    camper schrieb:

    direkter Zugriff auf t erfordert eine zusätzliche friend-Deklaration, sonst kann dieser Konstruktor nur für U=T verwendet werden

    FTFY

    Den Konstruktor als friend deklarieren?
    Wie wuerde denn die friend-Deklaration des Konstruktors in diesem Fall aussehen?



  • nico_schumann schrieb:

    Arcoth schrieb:

    camper schrieb:

    direkter Zugriff auf t erfordert eine zusätzliche friend-Deklaration, sonst kann dieser Konstruktor nur für U=T verwendet werden

    FTFY

    Den Konstruktor als friend deklarieren?
    Wie wuerde denn die friend-Deklaration des Konstruktors in diesem Fall aussehen?

    Nicht Konstruktor, die Klasse für alle Instanziierungen.



  • Nathan schrieb:

    nico_schumann schrieb:

    Arcoth schrieb:

    camper schrieb:

    direkter Zugriff auf t erfordert eine zusätzliche friend-Deklaration, sonst kann dieser Konstruktor nur für U=T verwendet werden

    FTFY

    Den Konstruktor als friend deklarieren?
    Wie wuerde denn die friend-Deklaration des Konstruktors in diesem Fall aussehen?

    Nicht Konstruktor, die Klasse für alle Instanziierungen.

    ??? Stehe grad auf dem Schlauch. Was meinst du damit?


  • Mod

    nico_schumann schrieb:

    ??? Stehe grad auf dem Schlauch. Was meinst du damit?

    Edit: Huch, da hatte ich wohl einen Blackout. In die Definition sollte

    template<typename> friend class Number;
    

    0
    damit du direkt auf das t jeder Spezialisierung zugreifen kannst.



  • Arcoth schrieb:

    In die Definition

    template<typename> friend class Number;
    

    schreiben.

    Also wie hier:

    template <typename T>
    class Number {
    
        T t;
    
    public:
    
        Number( const T& te = T() )
         : t(te) {}
    
        template <typename U>
        Number( const Number<U>& x )
         : t(x.t) {}
    
        template<typename> friend class Number;
    };
    

    Jetzt funktionierts 🙂


  • Mod

    Arcoth schrieb:

    camper schrieb:

    direkter Zugriff auf t erfordert eine zusätzliche friend-Deklaration, sonst kann dieser Konstruktor nur für U=T verwendet werden

    FTFY

    nochmal drüber nachdenken... 🙄


  • Mod

    camper schrieb:

    Arcoth schrieb:

    camper schrieb:

    direkter Zugriff auf t erfordert eine zusätzliche friend-Deklaration, sonst kann dieser Konstruktor nur für U=T verwendet werden

    FTFY

    nochmal drüber nachdenken... 🙄

    Dass das Template bei direktem Zugriff auf x.t ohne friend -Deklaration nie funktionieren kann ist mir klar. Das liegt aber nur daran dass das Template nicht für U=T instantiiert wird.



  • Du hast das Kommentar nicht verstanden.
    Er greift über den Getter zu, und im Kommentar steht dass "friend gebraucht wird SONST". Also wenn man direkt zugreifen würde. Was er aber nicht macht. Weswegen er auch kein friend braucht.


  • Mod

    😮
    Ich dachte, der Satz war irgendwie abgeschnitten, entschuldigt.



  • Hihi, kann ja mal passieren. Die Wortstellung ist auch etwas ... unüblich.


Anmelden zum Antworten