[QGHG-it-dev-list] Zadatak 33 - Evidencija o instanciranim SimpComp objektima

Nenad Korolija nenadko at gmail.com
Thu Dec 22 13:39:08 CET 2022


Zdravo svima,

Poslednji moji commit/push-ovi se odnose na zadatak 33.

Dakle, napravio sam uz Markovo savetovanje i predlog kako razresiti problem
duplog instanciranja globalne promenljive globalnu promenljivu u
global-vars.hpp + global-vars.cpp, koja se azurira prilikom seed-ovanja ili
brisanja svega.

Marko, hvala na javljanju za dupliranje pointera u vektoru kompleksa
ukoliko se seed-uje pomocu seed_sphere_intuitively!

Vidimo se,
Nenad

On Sat, Nov 19, 2022 at 1:43 AM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:

>
> Kako momentalno stoje stvari, biblioteka nam dozvoljava da seed-ujemo vise
> nezavisnih SimpComp kompleksa i da radimo sa njima, ali nigde ne vodimo
> evidenciju o tome koliko ih ima i kako im pristupiti svima odjednom ako
> treba (a trebace). Biblioteka treba da vodi tu evidenciju, sto je tema ovog
> zadatka.
>
> Treba dakle implementirati sledece tri stvari:
>
> (1) Uvesti jednu globalnu varijablu,
>
>     vector<SimpComp *> SeededComplexes
>
> koja treba da bude lista pointera na sve seed-ovane SimpComp objekte
> (nisam siguran da mi je sintaksa tacna, popravite ako treba). Ideja je da
> mogu u main() f-ji da seed-ujem nekoliko kompleksa na standardan nacin:
>
>     SimpComp *sc0 = seed_single_simplex(...);
>     SimpComp *sc1 = seed_sphere(...);
>     ...
>     SimpComp *scN = seed_stagod(...);
>
> i da se pointeri sc0, sc1, ..., scN automatski stave u listu
> SeededComplexes, tako da mogu bilo kome od njih da pristupim bilo direktno,
>
>     cout << sc2->name << endl;
>     cout << sc1->D << endl;
>
> ali da isto to mogu da uradim i preko globalne varijable:
>
>     cout << SeededComplexes[2]->name << endl;
>     cout << SeededComplexes[1]->D << endl;
>
> Deklaraciju globalne varijable stavite u simpcomp.hpp fajl, nakon
> deklaracije klase SimpComp.
>
> (2) Svaka seed f-ja treba na kraju, pre nego sto return-uje pointer na
> seed-ovani kompleks, da proveri da li je kompleks zaista seed-ovan (da
> slucajno nije nullptr iz nekog razloga), i onda da ga push-uje kao nov
> element u SeededComplexes, pa onda da uradi return().
>
> (3) Treba da napravimo novu f-ju,
>
>     void unseed_complex( SimpComp *simpComp );
>
> koju cemo eksplicitno da pozovemo kada hocemo da obrisemo neki kompleks.
> Ta f-ja treba da izbaci pointer na kompleks sa spiska SeededComplexes, pa
> onda da pozove destruktor koji ce rekurzivno da dealocira ceo kompleks.
> Takodje, treba da napravimo i f-ju
>
>     void unseed_everything( void );
>
> koja ce da prodje redom kroz sve elemente SeededComplexes, i da pozove
> unseed_complex() za svaki od njih. Drugim recima, da obrise svu memoriju
> koju smo alocirali. Ovu f-ju takodje ima smisla pozvati na kraju main()
> f-je, sta god da smo pre toga radili u njoj. :-) Obe ove f-je mogu da budu
> staticke, stavite ih zajedno sa f-jama za seed-ovanje u seed.cpp i seed.hpp
> fajlove.
>
> Ako nesto nije jasno oko ovog zadatka, javite.
>
> :-)
> Marko
>
>
> Dr. Marko Vojinovic
> Group for Gravitation, Particles and Fields
> Institute of Physics
> University of Belgrade
> ======================
> home page: www.markovojinovic.com
> e-mail:    vmarko at ipb.ac.rs
>
>
> --
> QGHG-it-dev-list mailing list
> QGHG-it-dev-list at ipb.ac.rs
> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20221222/a5eade92/attachment.htm>


More information about the QGHG-it-dev-list mailing list