Чего я хочу добиться, это следующее поведение:
int main(){
vector<Component*>v = {...};
draw(dynamic_cast< ??? >v[0]);
}
void draw(const Image& i){...}
void draw(const Text& i){...}
void draw(const Link& i){...}
, где Image, Text, Link
являются производными классами от Component
, но я не знаю, что поместить в < >
Dynami c cast, или, по крайней мере, если есть другой способ сделать это.
На данный момент я думал о том, чтобы использовать variant
, но чтобы получить элемент, мне нужно вызвать std::get
где мне нужно указать тип, и так в той же точке.
Так что на данный момент я думаю, что единственный способ - это создать список if(dynamic_cast<>(v[0])
со всеми возможными типами ...