Templateklassen - Memberzugriff



  • Hi!

    Hab folgendes Problemchen:

    template<int FOO1> class A
    {
        public:
            template<int FOO2> void Do( A<FOO> x )
            {
                x.i = 10;
            }
    
        private:
            int i;
    };
    
    int main()
    {
        A<1> a;
        A<2> b;
        a.Do( b );
        return 0;
    }
    

    Anscheinend darf A<x> nicht auf die privaten Habseligkeiten von A<y> zugreifen. Kann man das irgendwie umgehen?



  • Dir sollte die Lösung bekannt sein: friend.

    EDIT: Hier mal dein berichtigter Code^^:

    template<int FOO1> class A 
    { 
    	template <int FOO1>
    	friend class A;
    
        public: 
            template<int FOO2> void Do( A<FOO2> x ) 
            { 
                x.i = 10; 
            } 
    
        private: 
            int i; 
    }; 
    
    int main() 
    { 
        A<1> a; 
        A<2> b; 
        a.Do( b ); 
        return 0; 
    }
    


  • Danke dir, darauf wäre ich nie gekommen! Hab seit Jahren nix mehr mit "friend" gemacht.. 😞


Anmelden zum Antworten