C ++ 'ссылка' может быть только инициализирована, но не может быть присвоена:
int value1(1), value2(2);
int& ref1 = value1; // OK
int& ref2; // compile error: reference not initialized
int& ref3=ref1; // OK: ref3 refers to the same variable as ref1
ref1=value2; // equivalent to 'value1=value2'.
Для этого объект , содержащий ссылку, также может быть только инициализирован!
Так что действительно: если вам нужно присваивание классу, этот класс не может иметь ссылочных переменных-членов.(на самом деле, он мог бы, но назначение не может заставить эти элементы ссылаться на другое местоположение)
Когда вы думаете об этом, имеет смысл:
Ссылочная концепция определяет «псевдоним для другой переменной.Псевдоним подразумевает, что все, что вы делаете со своей ссылкой, вы фактически делаете с указанным местоположением.Когда вы применяете присваивание этому псевдониму, фактически вы присваиваете указанному местоположению.Цель ссылки будет потеряна, если вы сможете указать ее в другом месте с помощью присваивания.
Если последнее - то, что вам нужно, вы должны использовать указатель.