Я использую Cppcheck для управления своим кодом. У меня есть следующая функция:
bool my_function(std::string my_string) const
{
return 0 == my_string.compare("Some text"); // line 3
}
К моему удивлению, я получаю разыменование нулевого указателя в строке 3.
Я совсем запутался: в моей функции нет указателей. Почему я получаю эту ошибку?
Я пытался исследовать это:
Я проверил, пуста ли строка my_string.
Я создал объект с помощью "Мой текст", чтобы убедиться, что Cppcheck не жалуется на использование временного объекта:
bool my_function(std::string my_string) const { std::string str("Some text"); return 0 == my_string.compare(str); // line 3 }
Что еще я могу сделать? Это ошибка в Cppcheck? Есть ли проблема с самой функцией сравнить? Я был бы удивлен, если бы это было так, поскольку cppcheck не жалуется ни на какие другие функции std, которые используются в моем проекте.
Примечание. Я не спрашиваю об ошибке возможного разыменования нулевого указателя, поэтому это не дубликат любого из следующих вопросов: 1, 2 или 3.
return (0 == my_string.compare("Some text"));
? Просто может быть - person Khalil Khalaf   schedule 14.06.2016operator==
и делаетеreturn my_string == "Some text";
? - person NathanOliver   schedule 14.06.2016