我正在使用
迭代一个向量std::vector<std::string>::reverse_iterator ritr;
我需要在某个时候找出此向量中的字符串是否是使用函数
的运算符bool IsOperator(const std::string s);
当我按照以下方式调用该函数时,
if(IsOperator(*ritr))
eclipse抱怨!
Candidates are:
bool IsOperator(char)
bool IsOperator(std::basic_string<char,std::char_traits<char>,std::allocator<char>>)
(我有一个重载函数,接受char
而不是std::string
)
但是,它允许将引用的迭代器存储在字符串
std::string str= *ritr;
我在这里缺少什么?
答案 0 :(得分:2)
你的代码很好。消除isOperator(char)
和isOperator(string)
之间的歧义不是问题,因为string
无法隐式转换为char
。
我希望你的程序能够编译(如果没有,你还有其他东西没有显示),而IDE抱怨红色曲线只是意味着你的IDE有错误。
另外,一些评论:
我有一个
类型的函数std::vector<std::string>
函数不能没有std::vector<std::string>
类型。它可以返回类型为std::vector<std::string>
的值,或者它可以接受一个值。我想你的意思是后者。
bool IsOperator(const std::string s)
此功能签名没有多大意义。您可能意味着接受std::string
对象的常量引用:
bool IsOperator(std::string const& s)