Строка
&da= NULL;
пытается установить в NULL адрес переменной da
.Вы не можете этого сделать.
Вы можете иметь в виду
this->data = &da;
, что будет work
(как в случае компиляции), но, вероятно, приведет к ошибкам, если строка будет передана как data
выходит из области видимости, прежде чем ваш список делает (что весьма вероятно).
То, что вы, вероятно, на самом деле хотите, если вы собираетесь использовать string*
, это
this->data = new string(da);
, которыйдинамически выделяет новую строку, давая ей da
для копирования.В деструкторе вы бы хотели что-то вроде
if (data != nullptr) delete data;
Я не специалист по стандартам, поэтому не могу дать вам техническое объяснение lvalues
и тому подобное.