Tôi khá mới đối với C++, nhưng tôi đã gặp phải vấn đề mà tôi không thể giải quyết được. Tôi sẽ sử dụng ô tô để minh họa vấn đề, chỉ để làm mọi thứ dễ dàng hơn. Được rồi, vì vậy hãy nói rằng tôi có một chiếc xe cơ sở, và tôi có những thương hiệu khác nhau được kế thừa từ lớp đó. Giống như vậy:C++ Gọi hàm xuất phát từ cá thể lớp cơ sở
class Car
{
public:
Car();
};
class Ford: public Car
{
public:
Ford();
void drive();
void park();
};
Toàn bộ ý tưởng là đặt tất cả những chiếc xe khác nhau này lại với nhau trong một véc tơ thuộc loại Xe hơi. Giống như vậy:
vector<Car*> cars;
cars.push_back(new Ford());
cars.back()->drive(); //this won't work
Làm cách nào tôi có thể gọi hàm dẫn xuất trên cá thể lớp cơ sở? Lưu ý rằng tôi muốn đặt tất cả trong một vector duy nhất. Lý do đằng sau điều này là bởi vì tôi chỉ muốn sử dụng thể hiện lớp xe có nguồn gốc cuối cùng đã được thêm vào. (Trong trường hợp này lớp xe dẫn xuất là ford). Cũng lưu ý rằng tất cả các lớp học xe hơi sẽ có cùng chức năng.
Cảm ơn rất nhiều phản ứng tuyệt vời và nhanh chóng, điều này đã làm các trick. – Dan