¿Es posible pasar clases derivadas por referencia a una función que toma la clase base como parámetro
Di que tenemos una clase base abstractaIBase
con métodos virtuales puros (una interfaz).
Entonces derivamosCFoo
, CFoo2
de la clase base.
Y tenemos una función que sabe cómo trabajar con IBase.
Foo(IBase *input);
El escenario habitual en estos casos es el siguiente:
IBase *ptr = static_cast<IBase*>(new CFoo("abc"));
Foo(ptr);
delete ptr;
Pero es mejor evitar la administración del puntero, entonces, ¿hay alguna manera de usar referencias en tal escenario?
CFoo inst("abc");
Foo(inst);
dóndeFoo
es
Foo(IBase &input);