Default argument of type “const char *” is incompatible with parameter of type “char *”

前端 未结 2 606
甜味超标
甜味超标 2021-01-14 09:02

So I got this code from my teacher but it doesn`t work combined with other code, it works only if it is separatly in a project. The whole code works great, less this part

2条回答
  •  死守一世寂寞
    2021-01-14 09:21

    About string literals:

    In C, string literals are of type char[], and can be assigned directly to a (non-const) char*. C++03 allowed it as well (but deprecated it, as literals are const in C++). C++11 no longer allows such assignments without a cast.

    Your teacher is possibly more versed in C or "dated" C++. As stated above the language (= modern C++) disallows the assignment / initialization of a char* from a string literal.

    Workarounds:

    • Use char const * as type for the parameter. That's the reasonable solution when the string is not modified (why would you modify a string literal??)

    • Not recommended. When you need to write to that pointer: Store (a copy of) the string literal as a (non const) char[] and reference that. Issues: thread safety; side effects; why would you want to do this??

    • Better. If you need to write to / change the string: use std::string.

提交回复
热议问题