У меня есть класс Simulation, который должен генерировать 20 клиентов. У меня есть класс Customer, определенный в коде, который не показан. У меня также определены классы RegularCustomer и PremiumCustomer (также не показаны).
RegularCustomer и PremiumCustomer являются производными от абстрактного класса Customer. В моем классе симуляции я должен сгенерировать 10 RegularCustomer и 10 PremiumCustomer. Прямо сейчас я просто концентрируюсь на создании 10 RegularCustomer.
Вот мой код для класса Simulation:
class Simulation
{
private:
vector<RegularCustomer> regCustList;
public:
void printResult() {
cout << "Simulation Run" << endl;
for (int i = 0; i < 10; i++) {
RegularCustomer regCust = generateCustomer(1);
regCustList.push_back(regCust);
}
}
Customer* generateCustomer(int flag) {
if (flag == 1) {
return new RegularCustomer();
}
else {
return new PremiumCustomer();
}
}
};
Как вы можете видеть, метод generateCustomer () имеет тип возврата Customer. Это потому, что мне нужен тот же метод , чтобы иметь возможность возвращать оба дочерних типа Customer. Однако я получаю эту ошибку:
E0415 no suitable constructor exists to convert from "Customer *" to
"RegularCustomer"
Это сбивает с толку, так как я думал, что полиморфизм позволяет создавать дочерние классы из родительского типа. Например:
Parent parent = new Child();
Хотя это можно назвать теневым, я все время смешиваю эти два. Но все равно должно работать независимо.
Любые предложения будут отличными, спасибо!