#include <iostream>
#include <vector>
class Widget {
public:
virtual void draw() const = 0; // Pure virtual function
};
class Button : public Widget {
public:
void draw() const override {
std::cout << "Drawing a button." << std::endl;
}
};
class Slider : public Widget {
public:
void draw() const override {
std::cout << "Drawing a slider." << std::endl;
}
};
void render(const std::vector<Widget*>& widgets) {
for (const Widget* widget : widgets) {
widget->draw(); // Calls the appropriate draw() method
}
}
int main() {
Button button;
Slider slider;
std::vector<Widget*> widgets = {&button, &slider};
render(widgets); // Outputs: Drawing a button. Drawing a slider.
return 0;
}