Dostaję następujący błąd:błąd: nie można przekonwertować 'std :: basic_string <char> :: iterator ...' do 'const char * dla argumentu '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*)'
Dla z jakiegoś powodu mój program doskonale się kompiluje, kiedy pracuję na komputerze Mac ... ale kiedy używam komputera z Linuksem, ten błąd pojawia się w więcej niż jednym miejscu. (Jeśli ktoś może wyjaśnić, dlaczego tak się dzieje, że byłoby świetnie!)
Oto jeden z przypadków, gdzie wyskakuje błąd:
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 ...
}
Dokładniej, błąd jest pochodzących z tej linii:
t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
Czy ktoś wie, jak rozwiązać ten problem?
Działa [tutaj] (https://ideone.com/jZh5x5). Czy potrafisz wyprodukować [mcve]? – NathanOliver
Nie można pobrać prawidłowej funkcji usuwania, czy uwzględniono? (Niestety nie ma innego usunięcia w ) –
Borgleader
Odczytaj błąd kompilatora. Pominąłeś ważną część w tytule pytania. Mówi ci, że próbuje wywołać 'int remove (const char *)', co oczywiście nie jest funkcją, którą chcesz wywołać. –