Я получил базовый класс под названием «Рабочий» и два производных класса «Торговец и Бейкер».C++ Не удается создать экземпляр абстрактного класса при попытке переопределить метод
class Worker
{
private:
string _name;
public:
Worker(string, string, string, int);
~Worker();
virtual string atributes() = 0;
};
class Merchant : public Worker
{
private:
string _skillLevel;
public:
Merchant(string, string);
string atributes() override;
};
class Baker : public Worker
{
private:
string yearsOfExperiance;
public:
Baker(string, string);
string atributes() override;
};
Я создал список list<Workers> Workers
и я добавляю туда торговец и Бейкер объекты, как это:
void addToList(string name, string atributes, list<Worker>& Worker)
{
if (name == "John")
{
Baker kk = Baker(name, atributes);
Workers.push_front(kk);
}
else if (profesja == "Barack")
{
Merchant pp = merchant(name, atributes);
Workers.push_front(pp);
}
}
Проблема заключается в том, когда я пытаюсь скомпилировать код происходит ошибка C2259. Это говорит
«работник»: не может создать экземпляр класса абстрактная
Можете ли вы сказать мне, как решить эту проблему, пожалуйста?
Ваш список имеет кучу 'воркера, верно? Но у вас не может быть простой «рабочий», только «Бейкер» или «Торговец» (это то, что означает абстрактный). Таким образом, список не может содержать никаких «Рабочих» в нем. – immibis