Questa è una domanda su come funziona Multiple Dispatch.
Supponiamo di avere una gerarchia di tipi come questa:
Drawable -> Shape -> Polygon -> Rectangle
E ci sono tre funzioni (Questo è uno pseudo-codice):
void func(Rectangle*, Drawable*, Drawable*) ...
void func(Rectangle*, Rectangle*, Drawable*) ...
void func(Polygon*, Rectangle*, Rectangle*) ...
Supponiamo che questa sia una parte di codice:
Drawable* x = create_rectangle();
Drawable* y = create_rectangle();
Drawable* z = create_rectangle();
Ovviamente i tipi di x,y,z
sono tutti Drawable
ma contengono istanze di Rectangle
. Quale funzione verrà chiamata se scrivo: func(x, y, z)
?
Non abbiamo alcuna funzione che corrisponda ai tipi esatti di x, y and z
, quindi cosa succede in questo caso?