Передача виртуальной функции C ++ и фабричная функция - PullRequest
0 голосов
/ 06 ноября 2018

Я борюсь с последней частью домашнего задания и получаю сообщение об ошибке

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;
    }

Примечание: я не могу ничего изменить в заголовочных файлах согласно профессору. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...