Új hozzászólás Aktív témák
-
Hiftu
senior tag
Ez a téma elég messzire vezet. Szerintem két különálló részként kellene tekinteni egy kódra:
1, objektumok létrehozásra és kapcssolatok felépítése
2, business logika megvalósítása az objektumokkal.Ha lehetséges, akkor egy objektum kapja meg paraméterként a vele együttműködő objektumokat.
(nem minden esetben megoldható.) Ezáltal kisebb lesz a függőség és flexibilisebb a kód.
A létrehozás közben pedig kisebb lesz az esély a katasztrófákra. -
Hiftu
senior tag
Közben kipróbáltam. Segmentation fault-ot írt ki.

A b.push_back(i)-re hasalt el.
Akkor ötletem nem volt rossz, csak az eredménye: az a inicializálásakor még nincsen b vectorod.Megoldás #1:
Felcseréled az a és b változó sorrendjét.
Ez egy elég gyenge megoldás, több változó esetén szívhatsz vele.Megoldás #2:
Az összefüggő adatok inicializálását kiveszed az inicializálási listából (de szarul hangzik magyarul)
és berakod a constructor függvénytörzsébe. -
Hiftu
senior tag
Gyanítom, hogy 0-t kapsz a b vector méretére, különben nem írtad volna. Ha jól gyanítom, akkor az adattagok létrehozása a deklarálás sorrendjében történik. Az elképzelés em az, hogy "a" inicializálása után meghívodik a vector default constructora, ami üresre állítja azt.
-
Hiftu
senior tag
válasz
Hunmugli
#3817
üzenetére
Elmondom, miért nem ajánlott ilyesmiröl még gondolkodni sem.
1, nem tudod lokálisan elemezni a függvényt. Egy csomó külsö függösége lenne.
2, a külsö függöségei gyakorlatilag láthatatlanok lennének.
3, mások számára olvashatatlan lenne a kód (a való életben ez fontos). Keresnék a változókat lokálisan, paraméterként, adattagként, globálisnak és sehol nem találnák. Ez bujócskának jó lenne, de szoftvernek rossz.
4, hála istennek a c++ nem enged meg ilyet.Megoldás: használj paramétert és minden rendben lesz.
-
Hiftu
senior tag
Valami ilyesmit irnék main()-be.
Remélem nem irtam el semmit.
int main()
{
int i,j;
do
{
cout << " \n Tanulok szama: \t";
cin >> i;
}
while (i <= 0); //legalabb 1 tanulo adatat fel kellene vinni
tanulo* t = new tanulo[i]; //csinalunk tombot az adatoknak.
for (j=0;j<i;++j)
{
cout << "\n Nev: \t";
cin >> t[j].nev;
cout << "\n Jegy: \t";
cin >> t[j].jegy;
}
for (j=0;j<i;++j)
{
cout << "\n" << t[j].nev << "\t";
cout << "\n" << t[j].jegy << "\t";
}
cin.get();
cin.get();
delete[] t; //eldobjuk a lefoglalt memoriat
return 0;
}
Ú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!
- Eladó Független Samsung Galaxy S23 SM-S911B/DS apró hibával
- 16GB DDR4 3200Mhz ram
- Supra LoRad 2.5 Silver Anniversary edition 1,5 m
- HP EliteBook 840 G7 i5-10310U - TOUCH 16GB RAM 256GB NVMe világítós billentyűzet, üzleti laptop
- Philips 34" 34M2C3500L/00 WQHD VA 180Hz HDMI/DP ívelt gamer monitor (019)
- AKCÓ! HTC VIVE Pro 2 virtuális valóság szemüveg garanciával hibátlan működéssel
- Surface 3 - 13,5" 2k érintő, i5 1035G7, Iris Plus, 16GB RAM, SSD, jó akku, újszerű állapot, számla
- GYÖNYÖRŰ iPhone 13 Pro 128GB Sierra Blue -1 ÉV GARANCIA -Kártyafüggetlen, MS3965
- Corsair VENGEANCE Pro 32GB (4x8GB) DDR4 2800MHz
- billentyűzetek - kiárusítás - Logitech, Corsair, ASUS
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

