Код (Text): warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if (matchTag("<Tm>")) ^ Вызываемая функция: Код (Text): boolean matchTag (char* searchTag) { if ( strcmp(tagStr, searchTag) == 0 ) return true; else return false; } И как правильно писать, что бы ее не было?
Вы передаете указатель на константу, но функция думает, что это указатель на переменную и может ее изменить, что в свою очередь может привести к странным багам в неожиданных местах. Компилятор, видя это безобразие, пытается вас предупредить о потенциальных неприятностях. Правильно так Код (Text): boolean matchTag (char * const searchTag)
Хм, понятно. Правда const, надо подставить перед char *. Ох уж эти строки....... Как бы их постигнуть раз и навсегда......
Нет, это разные вещи. char * - неконстантный указатель на неконстантную строку const char * - константный указатель на неконстантную строку (то же самое char const *) char * const - неконстантный указатель на константную строку const char * const - константный указатель на константную строку
Еще раз спасибо за разъяснения! А в даном случае нужно именно не константный указатель на константную строку? Код (Text): boolean matchTag (char const * searchTag) Потому что при вызове Код (Text): if (matchTag("<Tm>")) "Tm" - это фактически константа?
Указатель тоже может быть константой, хоть это и не обязательно. Да. p.s. Выше я поправил немного, обратите внимание.
А вот в такой формулировке Код (Text): boolean COTTAGE::matchTag (char * const searchTag) ошибка, вернее предупреждение, вернулось.