Hirdetés
- Bambu Lab 3D nyomtatók
- Milyen videókártyát?
- Kockázatmentesen a helyesebb testtartásért
- Keskenyebb házba keresel hűtőt? Lehet, hogy megtaláltad
- Ne várj sokat a vásárlással: drágulás a láthatáron
- Házimozi haladó szinten
- Milyen TV-t vegyek?
- Kormányok / autós szimulátorok topikja
- 5.1, 7.1 és gamer fejhallgatók
- Vezetékes FEJhallgatók
Ú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, hathrowdeklará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!
- -ÚJ,2 ÉV GAR- DDR5 GAMER PC: RYZEN 7 8700F/9700X/9800X3D +RX 6600/6700XT +16-64GB DDR5! SZÁMLA!
- Dell Latitude 7430 x360 Ütésálló Érintős Hajtogatós Profi Ultrabook 14" -60% i7-1265U 16/512 IRIS Xe
- HP E24m G4 Monitor FHD IPS webkamerával, Windows Hello-támogatással
- Lenovo ThinkPad T14 Gen 5 Ultra-I7/16GB/512SSD/FHD/garancia!
- Lenovo ThinkPad X1 Carbon 9th i7-1165G7/16GB/512/FHD/Magyar
- STANDARD Setup! Már kamatmentes rèszletre is! Èrdeklődj!
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- AKCIÓ! Apple Studio Display 27 5K Nanotexturált üveg monitor garanciával hibátlan működéssel
- Dell Optiplex MT/SFF 3040, 3050, 3060, 3070, 5070, 7060/ Hp ProDesk /SZÁMLA- GARANCIA
- HP 200W töltők (19.5V 10.3A) kis kék, kerek, 4.5x3.0mm, 928429-002
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest


