没有匹配的成员函数调用“擦除”

Posted

技术标签:

【中文标题】没有匹配的成员函数调用“擦除”【英文标题】:No matching member function for call to "erase" 【发布时间】:2017-06-08 06:42:48 【问题描述】:

我尝试调用 erase() 函数来删除字符串中的空格,用于将字符串转换为整数的函数。相同的代码在 main() 中有效,但在函数内部却没有。我该如何修复它?

int convert(const string &line)


for (int i=0;i<line.length();i++)

    char wh=' ';
    if(line.find(wh))
        line.erase(find(line.begin(),line.end(),' '));

    //cout<<line[i];


if(line.length()==0)
    return 0;
int a=line[line.length()-1]-'0';
int b=convert(line.substr(0,line.length()-1))*10;
return a+b; 

【问题讨论】:

line 被声明为const;你不能修改它。 【参考方案1】:

尝试逐行传递值而不是 const 引用。 const ref 不能更改

int convert(std::string line)

【讨论】:

谢谢你,对我很有帮助。【参考方案2】:

尝试从 convert() 中删除 const。 任何用 const 声明的东西都不能修改。

【讨论】:

以上是关于没有匹配的成员函数调用“擦除”的主要内容,如果未能解决你的问题,请参考以下文章

没有匹配的成员函数调用 child.value

C++ - 没有匹配的成员函数调用“push_back”

字符串类擦除成员函数的C++时空复杂度

C ++没有匹配函数来调用向量中的擦除

C ++根据成员函数从向量中擦除对象[重复]

C++中的派生类,可以不定义对象直接调用基类的成员和调用自己的成员函数嘛???