Я хочу создать метод, который возвращает токен и увеличивает его.Простой способ вернуть содержимое итератора и увеличить его
Я сделал это:
_tokens является станд :: istream_iterator
std::string getToken()
{
std::string result;
result = *_tokens;
++_tokens;
return result;
}
Как вы можете видеть, что это своего рода некрасиво, потому что я возвращаю копию копии.
Но я не могу вернуть ссылку на результат. Результат результата - это локальная переменная.
И я не могу получить ссылку на * _tokens cause ++ _ токены изменят содержимое.
У вас есть представление, как я мог бы сделать это лучше?
Ну, вы можете использовать параметр в ссылке, если вы не можете иметь перемещение семантики. В противном случае вы сможете сделать что-то вроде 'return * _tokens ++; 'и надеяться на RVO. – Xarn