Kezdőoldal » Számítástechnika » Programozás » C++-ban ha nem tudok sehogy...

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?

Figyelt kérdés

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.


2022. jún. 13. 10:36
 1/5 A kérdező kommentje:
Vagy ha mar ilyen es ehhez hasonlo trukkokhozkell folyamodni, akkor rosszul van felepitve az osztalyaim logikaja?
2022. jún. 13. 10:37
 2/5 anonim ***** válasza:
100%

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.

2022. jún. 13. 11:03
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
48%
Most akkor A B-ből származik vagy sem?
2022. jún. 13. 12:01
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
Konkrét szitutól függ, hogy mit érdemes csinálni. Smart ptr jó választás lehet, de vakon nehéz konkrét választ adni. Egy setteren keresztül is be lehet injektálni a függőséget például. Ekkor külön érdemes validálni, hogy minden függőség elérhető mielőtt használnád az objektumot.
2022. jún. 13. 14:02
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

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.


[link]

2022. jún. 13. 17:28
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!