C++-ban ha nem tudok sehogy se inicializani a konstruktorban egy belso osztalyt (nem all rendelkezesre minden adat abban a pillanatban), akkor azt az osztalyt muszaj dinamikusan deklaralnom new-val?
Tehat ilyesmi a szerkezetem:
class B {...}
class A // : b(inicializos lista de nincs meg minden adat)
{
private:
B* b;
}
Igy ahhoz folyamodtam hogy b-t new-val hozom letre egy A::fuggvenyben es a A::destruktorban delete-vel torlom.
Igen, akkor kénytelen vagy később létrehozni. De használj smart pointert.
De persze meggondolandó úgy átalakítani a B osztályt, hogy a hiányzó adat nélkül is létre lehessen hozni. A konkrét eset dönti el, hogy ennek van-e értelme/lehetséges-e.
Még eggyel jobb, hogyha a B-t nem az A konstruktorában hozod létre, hanem dependency injection-el adod át, de ehhez nem ártana többet tudni a konkrét helyzetről.
Több lehetőség is van ahogy már fentebb is írták.
Ha mindenképp az osztályon belül akarod létrehozni és nem akarod a heapen foglalni akkor std::optional lehet a legjobb megoldás.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!