Új hozzászólás Aktív témák

  • jattila48

    aktív tag

    Sziasztok!

    A következő problémára várok megoldási javaslatot:
    Van egy függvényem, ami paraméterként Base * pointereket tartalmazó tömböt vár, de szeretném Derived * pointer tömbbel is meghívni. Valahogy így:

    class Derived : public Base{...}
    void f(Base **){...}
    Derived *d[10];
    ....
    f(d);

    A fordító természetesen hibát jelez, hogy nem tud Derived **-ról Base **-ra konvertálni. Ez világos hogy miért veszélyes általában, de nekem nem igazán Base ** típusú az f paramétere, hanem Base *[] tömb, amire teljesen természetes és veszélytelen lenne Derived *[] típusú tömböt konvertálni. reinterpret_cast-tal megoldható, de az elég rondán néz ki. Az a gond, hogy paraméterként átadva a Base *[] típust Base **-nak tekinti, holott nem egészen az. Esetleg valami elegánsabb megoldást tudnátok javasolni? Lehet, hogy a Base *[] tömböt be kéne ágyazni egy Barray osztályba, a Derived *[] tömböt pedig egy ebből származó Darray osztályba, az f-nek Barray * típusú paramétert adni. Ez sem tetszik, akkor már inkább a reinterpret_cast.

Új hozzászólás Aktív témák