0

我正在迭代一个向量

std::vector<std::string>::reverse_iterator ritr; 

我需要在某个时候确定此向量中的字符串是否是使用该函数的运算符

bool IsOperator(const std::string s);

当我按照以下方式调用函数时,

if(IsOperator(*ritr))

日食抱怨!

Candidates are: bool IsOperator(char) bool IsOperator(std::basic_string<char,std::char_traits<char>,std::allocator<char>>)

(我有一个用 acceptchar代替的重载函数std::string)但是,它允许将 deferenced 迭代器存储在字符串中的操作

std::string str= *ritr;

我在这里想念什么?

4

1 回答 1

2

你的代码很好。isOperator(char)消除和之间的歧义isOperator(string)不是问题,因为 astring不能隐式转换为 a char

我希望您的程序能够编译(如果没有,那么您没有显示其他内容),而 IDE 用红色曲线抱怨只是意味着您的 IDE 有错误。


另外,几点说明:

我有一个类型的功能std::vector<std::string>

函数不能没有类型std::vector<std::string>。它可以返回一个 type 的值std::vector<std::string>,也可以接受一个。我猜你说的是后者。

bool IsOperator(const std::string s)

这个函数签名没有多大意义。您可能意味着接受对对象的常量引用std::string

bool IsOperator(std::string const& s)
于 2013-02-20T15:50:13.303 回答