Ошибка С2664, как исправить?
#include <iostream>
using namespace std;
char* get_substr(char* sub, char* str);
int main()
{
char* substr;
substr = get_substr("three", "one two three four");
cout << "substring found: " << substr;
return 0;
}
char* get_substr(char* sub, char* str) {
int t;
char* p, * p2, * start;
for (t = 0; str[t]; t++) {
p = &str[t];
start = p;
p2 = sub;
while (*p2 && *p2 == *p) {
p++;
p2++;
}
if (!*p2)
return start;
}
return 0;
}
Скриншот с VS2022 подсветка и описание ошибок
Ответы (1 шт):
Автор решения: Den
→ Ссылка
Не понимаю в чем собственно проблема? Там же написано все четко.
Он подчеркивает 2 аргумента и говорит, что не может сделать неявное преобразование типов и показывает, что есть функция где это происходит. В комментарии выше все уже сказали, что по умолчания, ваши строки это константные строковые литералы(почитайте что это такое тут).
Чтобы это исправить, вам нужно либо аргументы сделать просто char*
или в функции дописать const
у ее параметров(если в функции не предусмотрено изменение входных данных).
А так же, вам стоит почитать про явное и неявное преобразование типов.