передача литеральной строки в качестве параметра const char * вызывает ошибку анализатора кода - PullRequest
1 голос
/ 06 июня 2019

Я перегружен функцией

int put_message(int level, int sys_log_level, const char * inp_message);
int put_message(int level, int sys_log_level, const std::string &inp_message);

и вызываю эту функцию

put_message(0, LOG_ERR, "clock_gettime error");

Код скомпилирован и работает, но анализатор кода Eclipse CDT сообщает

НеверноКандидаты аргументов: int put_message (int, int, const char *) int put_message (int, int, const? &) '

Как я могу исправить эту ошибку?

Обновление: после изменения LOG_ERR в int (LOG_ERR) ошибка исчезает.Я не добавил в шапке.Добавление решает проблему.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

вам не хватает #include <string> или что-то связанное с классом строки

0 голосов
/ 06 июня 2019

Вам нужно привести строку к правильному типу, компилятор обрабатывает «некоторую строку» как char [], поэтому вам нужно привести ее к const char *

Попробуйте с

put_message(0, LOG_ERR, (const char*)"clock_gettime error");
...