Я едва мог видеть какие-либо проблемы с вашим кодом. Кажется, что источник ошибки находится в другом месте.
Полагаю, вы возвращаете ссылку на локальную переменную.
См. Мой пример:
#include <iostream>
using std::string;
const string& getString()
{
string text("abc");
return text;
}
int main() {
string text("abc");
std::cout << (getString() == text ? "True" : "False") << "\n";
return 0;
};
Вывод на мою машину:
False
Однако в некоторых средах я получал исключительный вывод. Это неверный код, но поведение не определено. Видимо, часто это работает правильно.
Следите за предупреждениями компиляции, такими как:
a.cpp:7: warning: reference to local variable ‘text’ returned
Вы также можете попробовать скомпилировать свой код с опцией "-Wall" и посмотреть, указывают ли предупреждения на реальные проблемы.