我在这个向量上有一个包含字符串的向量,一个迭代器(_it
),我希望使用这个迭代器返回一个字符串的引用。
目前,返回是通过复制:
std::string myClass::next_token()
{
std::vector<std::string>::const_iterator old_it = _it++;
return *old_it;
}
我想这样做(注意返回类型的&
)
std::string& myClass::next_token()
{
//...
}
但是我收到以下错误:
类型
‘std::string& {aka std::basic_string<char>&}’
的表达式‘const std::basic_string<char>’ std::string& token = *old_it
类型的引用无效初始化
答案 0 :(得分:3)
const_iterator
永远不会为您提供非const
参考;您需要使用普通iterator
或返回const string &
。
答案 1 :(得分:2)
您无法从+
创建string&
,因为const string &
无法修改。获得const string &
的原因是您使用的是const string &
。如果您将代码更改为
const_iterator