Új hozzászólás Aktív témák

  • WonderCSabo

    félisten

    válasz dany27 #1559 üzenetére

    Kijavítgattam, így működik, legalábbis erre a kemény 3 adatra, többre nem tesztelgettem le.

    Viszont ez az egész nagyon kusza így. A fa adatszerkezetet rakd el külön fájlba. Az "elem" osztály a fának egy belső osztálya legyen, sokkal egyszerűbb és szebb lesz a megvalósítás úgy. A student, szamok classt, main fv-t legalább egy külön fájlba rakd a fától, semmi közük egymáshoz. Ennek a sornak:

    fa<T>::fa.beszur(adat.convert(line));

    Mi akar lenni a jelentése? Ha a beszur statikus fv lenne, akkor arra hivatkozhatnál így:

    fa<T>::beszur()

    Ha a fa egy objektum lenne, akkor hivatkozhatnál rá így.

    fa.beszur()

    Amit te leírtál, az azt jelenti, hogy van egy fa osztálynak statikus fa adattagja, aminek statikus beszur fv-ére hivatkozol...

    Aztán ez:

    y.beszur(*(new student("dsfdsf","KSDFGH")));

    Ha rögtön dereferálod, semmi értelme dinamikusa allokálni, mert csak egy szép memory leaket kapsz, és semmi előnyt. :) Az ilyet C++ -ban így írjuk:

    y.beszur(student("dsfdsf","KSDFGH"));

    A BST-nek hol maradt a destruktora? Dinamikusan hozod létre a csúcsokat és sehol sem szabadítod fel őket.

    Illetve: a fa nem lesz túl általános, hordozható, ha ilyen módon írod meg. A compare fv helyett használj sima < operátort, a convert helyett pedig << operátort. És ezeket terheld túl a saját típusaidban. Így még a beépített típusokra is fog működni.

    Jól sejtem, hogy Javában kezdtél el programozni? :)

Új hozzászólás Aktív témák