Любое литеральное строковое значение, которое вы вводите в свой исходный код (например, "james"
), по определению является значением const char*
, const
означает, что оно не может быть изменено во время выполнения программы. В вашем классе член name
объявлен как тип char*
, который не является const
, и поэтому может быть изменен во время выполнения. Ваш компилятор не позволяет вам присваивать значение const char*
переменной типа char*
для сохранения инварианта о том, что значение типа const char*
не может быть изменено. (Конечно, все в порядке; вы можете присвоить значение char*
переменной типа const char*
.
Чтобы исправить это с наименьшим количеством символов, вы должны изменить char* name
на const char* name
в вашем определении структуры employee
. Тем не менее, я согласен с тем, что лучше всего поменять его на std::string
члена, как @ Hamza.S изложил в своем ответе. Класс std::string
имеет оператор присваивания, который строит его из значения const char*
, поэтому строка james.name = "james"
в своем ответе по существу устанавливает std::string
равным const char*
значению "james"
.