我收到以下错误:
error: cannot convert 'std::basic_string<char>::iterator {aka __gnu_cxx::__normal
_iterator<char*, std::basic_string<char> >}' to 'const char*' for argument '1'
to 'int remove(const char*)'
由于某种原因,当我在Mac上工作时,我的程序可以完美地编译...但是,一旦我使用Linux机器,此错误就会在多个地方弹出。
这是错误弹出的实例之一:
SomeClass::SomeClass(string t, string art, Time dur) {
char chars[] = ",";
t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
art.erase(std::remove(art.begin(), art.end(), chars[0]), art.end());
// Some more code ...
}
更具体地说,错误来自以下行:
t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
有谁知道如何解决这个问题?
你忘了#include <algorithm>
,这里std::remove
的位置。否则,您的编译器仅会知道这一点std::remove
(我在Visual C ++ 14中遇到相同的错误),它是在间接包含的<cstdio>
标头中定义的。
编译器之间的不同行为是#include
标准库实现的不同层次结构的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句