- Nagyon erős ajánlat lett az Apple Watch SE 3
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Itt a Xiaomi Android 16-os frissítési ütemterve a kompatibilis készülékekre
- iPhone topik
- Ilyen lesz a Galaxy S26 Ultra
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Android alkalmazások - szoftver kibeszélő topik
- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
- Samsung Galaxy A52s 5G - jó S-tehetség
Új hozzászólás Aktív témák
-
dobragab
addikt
válasz
EQMontoya #3686 üzenetére
Klasszikus értelemben vett hibát egyet sem. Olyat viszont, ami a költő hozzá nem értéséről tanúskodik, többet is.
- Az osztály elnevezése. Ha kommentben kell jelezni, hogy ez bizony
XMLParsingException
, tessék már úgy is nevezni az osztályt. Bár ahogy nézem, itt az osztálynevek módosítva vannak, nem hiszem, hogy az XML-t kiszedted volna belőle.-
std::string
-et érték szerint átvenni a konstruktorban. Elvileg nem baj, sok esetben érdemes így csinálni C++11 óta, ha ugyanis aBaseException
-nek vanstd::string&&
-es konstruktora, egy füst alatt csinálhatsz string-et másoló és mozgató konstruktort, ha az inicializáló listán ezt írod:BaseException{std::move(error_)}
.Mivel pl. az
std::runtime_error
-nak nincs ilyen konstruktora, és az egész kódból sugárzik, hogy C++98-ban írták, így erős a gyanúm, hogy itt csak egy felesleges másolást látunk. Plusz sose szerencsés, ha exception dobása közben dobódik egy másik a másolásnál, mert pl. elfogyott a memória. Ezt viszont nem lehet teljesen kikerülni.- Kézzel forward-olni a konstruktort, mint az állatok. Ráadásul rosszul, lásd előző pont. C++11 óta illik így írni:
using BaseException::BaseException;
- Copy ctor kézzel, mint az állatok. Ha valami magic-et csinál ott, még elfogadható, de akkor az op=-nél is illene, meg amúgy is minek. Ez egy sima kivétel-osztály, az ilyen szarság csak hibalehetőség.
- Virtuális destruktor a leszármazottban. Feltételezem, csak azért csinálta, hogy a destruktort virtuálisnak deklarálja, annak meg így semmi értelme, azt az ősben kellett. Ha a destruktora nem üres, komoly indok kell az egészhez, de attól még lehet jó.
-
throw()
. Már a C++98 szabványosítás körül kiderült, hogy athrow(...)
deklaráció szar, elavult, nincs értelme, csak ront a helyzeten. 2016-ban még "karban tartják" ezt a kódot, és ilyen van benne. Athrow()
ráadásul inkompatibilis anoexcept
-tel, tehát ha tényleg rögzíteni és vizsgálni kell, hogy egy függvény dobhat-e, ez a kifejezés false lesz.if(noexcept(e::~ParsingException())) // ...
- Kivételdobásról nyilatkozni destruktorban. Egyrészt ha konstruktorban bármi dobódik, az
std::terminate
. Másrészt, hathrow
deklaráció sérül, az isstd::terminate
, tehát a destruktornál pontosan ugyanaz történik, akármit nyilatkozik ott. Még hanoexcept
-et ír, az is ugyanazt jelenti, mintha semmit nem ír oda.- Az egysoros tagfüggvények definícióját kiviszi másik forrásfájlba. Ugyan már, kinek fáj, ha inline? Feltételezem, egyikben történik semmi eget rengető, tehát egyrészt a nagy semmiért egy egész függvényhívás lesz (pl. a destruktornál). Másrészt az olvasót baszogatja a tudat, hogy meg kéne nézni, mi van a cpp fájlban, pedig sejti, hogy valószínűleg semmi különös, amiért érdemes lenne megmozdítani az ujját.
Szóval röviden ennyi. Nálam így nézne ki ez az osztály:
struct XMLParsingException : public BaseException
{
using BaseException::BaseException;
};
Ú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!
- BMW topik
- Gumi és felni topik
- Milyen processzort vegyek?
- Polgári repülőgép-szimulátorok
- Bemutatkozott a Samsung Galaxy Tab A11 és Tab A11+
- BestBuy topik
- Nagyon erős ajánlat lett az Apple Watch SE 3
- Teljes verziós játékok letöltése ingyen
- Milyen Android TV boxot vegyek?
- Fejhallgató erősítő és DAC topik
- További aktív témák...
- HAVN HS 420 PC ház, Midi-Tower, E-ATX, edzett üveg - fekete
- Új, bontatlan, iPhone 17 Pro Max gyárilag kártya-független, apple világgaranciával
- ÚJ HP Pavilion 16 - 16"IPS WUXGA - Ryzen 5 8540U 16GB - 512GB SSD - Win11 - 3 év garancia - MAGYAR
- EVGA Geforce RTX 3070 Ti FTW3 Ultra Gaming
- Asus ROG Strix G16 G614JZR 16" QHD+ IPS i9-14900HX RTX 4080 32GB 1TB NVMe gar
- Bomba ár! Lenovo ThinkPad T470 - i5-G6 I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W10 I Garancia!
- GYÖNYÖRŰ iPhone 11 64GB White -1 ÉV GARANCIA - Kártyafüggetlen, MS3348, 93% Akkumulátor
- MacBook felvásárlás!! MacBook, MacBook Air, MacBook Pro
- Honor 400 Lite / 8/256 GB / Kártyafüggetlen / 12Hó Garancia
- iKing.Hu Samsung Galaxy S25 Plus Navy 12/256 GB Használt, karcmentes állapotban 3 hónap garanciával!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest