C ++ передает ссылку на саму строку, не будет компилироваться

Я использую 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);

0

Решение

В вашем коде нет ничего плохого, но, судя по вашей ошибке, я бы предположил, что объявление, которое видит вызывающая сторона, таково:

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
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector