簡體   English   中英

錯誤:無法轉換 'std::basic_string<char> ::iterator...' to 'const char* for argument '1'...'</char>

[英]error: cannot convert 'std::basic_string<char>::iterator ...' to 'const char* for argument '1' ...'

我收到以下錯誤:

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層次結構的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM