Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
jattila48
#3184
üzenetére
A "fölösleges" kód akkor keletkezik, ha handle_class.h-ban a BodyClass incomplete type-ként forward deklarálva van. Ha beinkludolom a teljes body_class.h-t, akkor "szép" kódot generál. Ekkor persze nincs értelme a pimpl-nek. Úgy tűnik, hogy a forward deklarációval nincs elég információja a BodyClass osztályról, hogy a pimpl és az mfp alapján meghatározza a BodyClass f tfv.-ének valódi címét. Mintha a pimpl-et akarná különböző információk alapján igazítani, ahogy a this-t szokta igazítani a thunk kód többszörösen örökölt osztályok esetén. Jó lenne, ha a forward deklarációban meg lehetne mondani, hogy a BodyClass teljesen közönséges osztály, nem örökölt senkitől (főleg nem többektől) és nincs virtuális tfv.-e (még emiatt is lehet ez az igazítás). Akkor talán nem generálná ezt az ilyen osztályokra amúgy tényleg fölösleges igazító kódot. Ilyet sajnos tudtommal nem lehet a C++-ban. Egyébként a kódban valószínűleg csak cím hibás, mégpedig a
004116D6 cmp dword ptr ds:[4168B4h],0
sorban a 4168B4. Amikor rosszul fut, akkor ez a cím unicode sztringekre mutat, vagyis nyilvánvalóan rossz. Amikor jól fut, akkor különböző globális konstansok lehetnek itt és környékén (ha jól fut, akkor 0). Mégsem a const deklarációtól függ, hogy jó-e vagy nem, mert újra buildeléskor const-tal is elromlott. Talán a linker lesz a hibás. Egyébként az LLVM erre a kódra assertion failed-del elszáll, és kéri, hogy a hibajelentést küldjem be. Csak a gcc tudta minden gond nélkül buildelni. -
MageRG
addikt
válasz
jattila48
#3184
üzenetére
Nem értek annyira a C++ programozáshoz, de nekem fura hogy egy static memberbe akarsz belepakolni egy másképp példányosodó valamit.
A HandleClass::mfp közös az összes HC-ben, ugyanazt a BodyClass példány memberét hívja.
De a HandleClass::f meg egy-egy külön BodyClass példány membert hív, ami a konstruktorban jön létre.
Vagyis a két hívás *vára nem ugyanazt csinálja.
Akkor lenne ugyanaz, ha a *pimpl member is statikus lenne.De ez csak az én "két centem".

Ú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!
- TCL LCD és LED TV-k
- sziku69: Fűzzük össze a szavakat :)
- Call of Duty: Black Ops 7
- World of Tanks - MMO
- Huawei Watch D2 - nyomás utána!
- LG LCD és LED TV-k
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Milyen processzort vegyek?
- Hitelkártyák használata, hitelkártya visszatérítés
- Bemutatkozott a Poco F2 Pro (már megint)
- További aktív témák...
- Felújított (Refurbished) DELL latitude 5420 Tartós Üzleti Laptop 14" -70% i5-1145G7 4Mag 8/256 FHD
- LG UltraGear 27GX704A-B - Kicsomagolt monitor (2025 dec)
- LG UltraGear 32GQ950-B - Használt Monitor (2024)
- Eladó Laptop üzletből+GARANCIA 10 magos nagyon erős laptop olcsón azonnal vihető
- 7 gen i5 Acer TravelMate TMX349-G2-M-57EV(HIBÁS)
- BESZÁMÍTÁS! ASROCK B650M R7 7700 32GB DDR5 1TB SSD RX 6900XT 16GB Zalman Z1 PLUS Seasonic 750W
- Eladó EVGA GT 640 2GB videokártya
- Bomba ár! HP EliteBook 840 G9 - i7-1270P I 32GB I 512SSD I 14,1" WUXGA I Cam I W11 I Gari!
- 0% THM 4 havi részlet, beszámítás! Gamer PC, notebook, konzol, Apple termék, hardver KAMATMENTESEN!
- Eladó megkímélt Samsung Galaxy A13 4/64GB / 12 hó jótállás
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: ATW Internet Kft.
Város: Budapest


