Есть две проблемы с вашим кодом.Во-первых, "Hello World!"
- это char const[13]
, а не std::string
.Таким образом, компилятор должен (неявно) преобразовать его в std::string
.Результатом преобразования является временное (rvalue в C ++ - говорят), и вы не можете инициализировать ссылку на неконстантный с временным.Во-вторых, даже если вы могли (или вы объявили функцию, возвращающую ссылку на const), вы возвращаете ссылку на что-то, что немедленно выйдет из области видимости (и, следовательно, будет уничтожено);любое использование полученной ссылки приведет к неопределенному поведению.
Реальный вопрос: почему ссылка?Если вы на самом деле не ссылаетесь на что-то в объекте с более длительным временем жизни, имея в виду, что клиентский код изменяет это (обычно это не очень хорошая идея, но есть заметные исключения, такие как operator[]
вектора), вы должны вернутьпо значению.