Я использую XCode, и он отказывается компилировать при передаче ссылки на сам объект строки.
(string &text, string remove)
без &
это компилируется. Это мой код, который является неправильным или это может быть что-то с файлом проекта?
это ошибка компилятора:
Undefined symbols for architecture i386:
"removeLetters3(std::string, std::string)", referenced from:
Main() in narcissism.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Код:
string removeLetters3(string &text, string remove)
{
for (int i = 0; i < remove.length(); i++)
{
int pos = 0;
while ((pos = text.find(remove[i], pos)) != string :: npos)
{
text.replace(pos, 1, "");
}
}
return "";
}
и вот как эта функция называется:
string text;
string rletter;
removeLetters3(text, rletter);
В вашем коде нет ничего плохого, но, судя по вашей ошибке, я бы предположил, что объявление, которое видит вызывающая сторона, таково:
string removeLetters3(string text, string remove);
Пока ваша реализация читает
string removeLetters3(string &text, string remove) {
Поэтому, когда ваш компоновщик пытается найти реализацию первого, он терпит неудачу, потому что такой реализации нет.
Об этом свидетельствует ошибка:
Undefined symbols for architecture i386:
"removeLetters3(std::string, std::string)", referenced from:
Main() in narcissism.o
обратите внимание на подпись. это не говоря:
Undefined symbols for architecture i386:
"removeLetters3(std::string&, std::string)", referenced from:
Main() in narcissism.o
Других решений пока нет …