Когда я компилирую этот код:
class DecoratedString
{
private:
std::string m_String;
public:
// ... constructs, destructors, etc
std::string& ToString() const
{
return m_String;
}
}
Я получаю следующую ошибку от g ++: invalid initialization of reference of type 'std::string&" from expression of type 'const std::string'
.
Почему m_String рассматривается как const? Разве компилятор не должен просто создать ссылку здесь?
EDIT:
Далее, что я должен сделать, чтобы эта функция действовала как преобразование в строку, которая будет работать в большинстве случаев? Я сделал функцию const, поскольку она не изменяет внутреннюю строку. .. возможно, мне просто нужно заставить его вернуть копию ...
РЕДАКТИРОВАТЬ: Хорошо ... заставить его вернуть работоспособную копию.