Then your copy constructor should set m_bar of the new thing to m_bar of the old thing. Somehow I'm missing the problem? (Assignment operator for an existing left-hand side can't work with a reference object, since references can't be re-seated, so I'm hoping you don't mean assignment operator.)