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

前端 未结 2 604
甜味超标
甜味超标 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:17

    Depending on compiler, C-style string literals may be allocated in readonly memory. Thus they are const char[N+1] (N is the string length) (which is implicitly convertible to const char* because of array to pointer decay).

    The problem you're having is that it's illegal to drop const qualifiers (with the exception of the infamous const_cast or equivalent C-style cast).

    Since you're only reading from sir, you can fix this by making sir be const char* instead, which doesn't violate const:

    class student {
    ...
    student(int = 8, const char* =" "); // problem solved
    ...
    };
    
    student::student(int nr_marks, const char* sir) : // remember to change it here as well
        marks(nr_marks)
    {
        strcpy(name, sir);
    }
    

提交回复
热议问题