Проблема со строкой:
lineRef.nextLine = &NewLine(lineRef);
- это то, что говорит вам компилятор.Вы берете временный адрес.Это означает, что после достижения ;
временный NewLine(lineRef)
будет уничтожен, а указатель lineRef.nextLine
будет указателем на мертвый объект.
Обновление: как сделать эторабота.
Это зависит от того, что вы хотите сделать.Если вам нужно иметь список , то самое простое - использовать предварительно упакованную структуру данных list
(std::list<Line>
), а не использовать собственную реализацию списка.
Если вы действительно хотите реализовать свой собственный список, то вам нужно будет динамически выделить следующий узел (это сделает компилятор счастливым), и вам нужно будет добавить код для управления list (правильная конструкция Line
объекта, который инициализирует поля, включая copy-construction , деструкторы для управления динамической памятью, возможно, некоторые вспомогательные функции для walk списка (или итераторов , чтобы иметь возможность использовать алгоритмы ...) Просто не беспокойтесь и используйте std::list
.