Я борюсь с последней частью домашнего задания и получаю сообщение об ошибке
error: passing ‘const string {aka const std::__cxx11::basic_string<char>}’ as ‘this’ argument discards qualifiers [-fpermissive]
nm = name_str;
Рассматриваемый конструктор
Pilot::Pilot(std::string name_str): Aircrew(nm)
{
nm = name_str;
};
с заводской функцией
Aircrew *Aircrew::makeAircrew(char ch, std::string name_str){
if(ch == 'P')
return new Pilot(name_str);
в заголовочном файле у меня
class Aircrew
{
public:
Aircrew(std::string name_str);
virtual const std::string type(void) const = 0;
virtual const int maxFlights(void) const = 0;
const double maxHours(void) const;
const std::string name(void) const;
void setFlights(int i);
void setHours(double h);
void print(void) const;
virtual void scheduleFlight(int f, double h) const;
static Aircrew* makeAircrew(char ch, std::string name_str);
virtual ~Aircrew(void);
protected:
const std::string nm;
int flightsTaken;
double hoursWorked;
};
class Pilot: public Aircrew
{
public:
Pilot(std::string name_str);
virtual const std::string type(void) const;
virtual const int maxFlights(void) const;
};
Теперь в соответствии с заводской функцией я пытаюсь передать имя в строку const nm, но я борюсь с тем, как это сделать. Я гуглил безрезультатно. Цель состоит в том, чтобы передать name_str в nm, чтобы в имени функции-члена я мог это сделать.
const string Aircrew::name(void) const{
return nm;
}
Примечание: я не могу ничего изменить в заголовочных файлах согласно профессору. Заранее спасибо!