- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Mr Dini: Mindent a StreamSharkról!
- gban: Ingyen kellene, de tegnapra
- sh4d0w: Csak a profit - emberélet nem számít
- Klaus Duran: 2025 dude
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- laskr99: Újrakezdem a processzor és videókártya szilícium magok fotózását
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
Új hozzászólás Aktív témák
-
ArchElf
addikt
válasz
h1ght3chzor #1524 üzenetére
Amit kiókumláltam (hiányos c++ tudásommal):
Project* temp1 = new Project [getprojektmeret()];
for(int i=0;i<getprojektmeret();++i){
temp1[i]=this->tomb[i];
}
delete[] this->tomb;
this->tomb = new Project[getprojektmeret()+1];
int k=0;
for(k=0;k<getprojektmeret();++k){
this->tomb[k]=temp1[k];
}
this->tomb[k]=a;
delete[] temp1;A második sorban referencia szerint másolod át az osztályokat, így hiába másoltad át, ha a referencia a temp1-ben ugyanoda mutat, mint a tomb-ben.
Miután az 5. sorban delete-tel kitörlöd a tömböt látszólag törlődik a temp1 tömb tartalma is, hiszen a delete igazából nem (csak?) a hivatkozás tömböt törli, hanem a mögötte álló tartalmat is. A következő sorbancsinálsz egy új tömböt az elemeidnek, de azok már valójában törlődtek az előző sorban, hiába másolod át a for ciklusban, már nem lesznek valid elemek (príma érvénytelen hivatkozásokat sikerül így generálnod. A második delete meg valószínűleg azért hal meg, mert már eleve érvénytelen hivatkozások vannak a tömbben.Alapvetően az alábbi lehetőségeid vannak:
- ne töröld az elemeket delete-el (se az elején se a végén), csak nullázd ki a tömbböt, az új elemet add hozzá egyszerűen (lehet, hogy memory leak-et okoz - bár jobban belegondolva taláűn nem is)
- nem kell a sok másolgatós mizéria, csinálj neki egy új tömböt a régit meg dobd el (kb ugyanaz mint az előző, kevesebb másolással), korábban már írtam hogyan
- add át érték szerint az elemeket - kell hozzá egy Project(const Project& p) konstruktor, amivel másolni tudod az elemeket. Bonyolultabb (illetve volatilis) osztályok esetén nem igazán működik, de ha mindenképp szeretnéd használni a delete-et akkor ide jó lesz.AE
-
proci985
MODERÁTOR
válasz
h1ght3chzor #1524 üzenetére
teljes kód nem kell, pl egy tömb típusa, még az a is elég szvsz.
tipp: szeparáld a tárolóclasst a projecttől, és teszteld pl egy célra létrehozott classal külön. szerintem egyszerűbb lenne, hacsak nem valami minimálprojektről van szó, ahol nem éri meg mindent szétválasztani.
"Egyébként stl tárolót, nem használhatok"
beadandó?WonderCSabo: jogos, push_back pedig tényleg a legegyszerűbb
.
Mindent van értelme dinamikusan kezelni, sokszor jól jöhet (bár nyilván ilyen kicsi feladatnál nem sok értelme van).
persze, de elnézve a kódot volt egy olyan sanda gyanúm, hogy itt valami egyéb követelmény is van a háttérben (tipikus c iskolapéldának tűnt)..
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- OHH! Dell Precision 7560 Tervező Vágó Laptop -70% 15,6" i7-11850H 32/1TB NVIDIA A3000 6GB FHD
- Asztali PC , i7 6700K , 1080 Ti 11GB , 32GB DDR4 , 500GB NVME , 500GB HDD
- Asztali PC , R5 8400F , RTX 3070 , 32GB DDR5 , 500GB NVME , 2TB HDD
- Legion Go 1TB
- Lenovo LOQ 15IRX9 - i5 13450HX, 16GB, RTX 4060 8G, 1TB M.2 (Gari: 2027.03.11.)
- Új! Számla + 1-3ÉV Gari! Áfás! Gamer PC - Számítógép! I5 14400F / RTX 5060 / 32GB DDR5 / 1TB M.2 SSD
- AKCIÓ! Apple Macbook Pro 15" 2018 i9 9850HK 32GB 500GB 560X 4GB garanciával hibátlan működéssel
- LG 34WQ75X-B - 34" Ívelt IPS Panel - 3440x1440 2K QHD - 60Hz 5ms - FreeSync - USB Type-C 90W
- AKCIÓ! MSI Z77 MPOWER Z77 chipset alaplap garanciával hibátlan működéssel
- BANKMENTES részletfizetés Noblechairs HERO Fekete/Platinafehér Gamer Szék
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest