How can I change the variable to which a C++ reference refers?

前端 未结 10 1024
既然无缘
既然无缘 2020-11-29 01:50

If I have this:

int a = 2;
int b = 4;
int &ref = a;

How can I make ref refer to b after this code?

10条回答
  •  春和景丽
    2020-11-29 02:24

    You can make a reference wrapper very easy using the placement new:

    template< class T >
    class RefWrapper
    {
    public:
        RefWrapper( T& v ) : m_v( v ){}
    
        operator T&(){ return m_v; }
        T& operator=( const T& a ){ m_v = a; return m_v;}
        //...... //
        void remap( T& v )
        {
            //re-map  reference
            new (this) RefWrapper(v);
        }
    
    private:
        T& m_v;
    };
    
    
     int32 a = 0;
     int32 b = 0;
     RefWrapper< int > r( a );
    
     r = 1; // a = 1 now
     r.remap( b );
     r = 2; // b = 2 now
    

提交回复
热议问题