Panie i Panowie, gdzie robię błąd?
Hierarchia klas:
Employee (abstrakcyjna) <- White_collar <- Trader
Tool (abstrakcyjna) <- Phone
Tool (abstrakcyjna) <- Car
Mam w klasie Employee std::vector<Tool*> employee_tools;
W klasie White_collar:
void complete_equipment() override {
Phone p(123456789);
employee_tools.push_back(&p);
Car c;
employee_tools.push_back(&c);
employee_tools[0]->info();
};
Funkcja info() jest funkcją wirtualną i tutaj działa dobrze, natomiast gdy chcę potem w klasie Trader wywołać taką samą linijkę w funkcji:
void show_equipment() override {
std::cout << " Rozmiar wektora " << employee_tools.size(); // rozmiar się zgadza (2)
employee_tools[0]->info(); // tutaj program umiera
};
Coś jakby z typem wskaźnika jest nie tak, ale przecież liczę na polimorfizm i wyżej działa. Z góry dzięki.