|
| Kategóriák: | Programozási nyelvek » C++ |
| Perseus kérdése | privát | 2012.07.02. 03:47 | válasz |
| Üdv, Akadt egy kis problémám a nem statikus metódusokra mutató pointerekkel. DX11-hez készítek egy effekt framework-öt és CreateShader-hez szökségem lenne a két: ID3D11Device::CreateVertexShader(...);Nos deklaráltam is a sajátjaim: class Example1. Ha ilyen módon adok értéket a drága pointernek, azzal lényegében feltételezni szeretném, hogy statikus metódusról van szó, és hát nemtudom meghívni a *Device objektumomon amin kellene. 2. Ha nem így (pedig szerintem nem így) adok értéket a pointereknek, akkor hogy? | |
| Csaboka2 megoldása (50 pont) | előzmény | privát | 2012.07.02. 08:47 | válasz |
| Ahhoz, hogy egy nem static metódust meghívjál, igazából két ponter kell: 1. Arra a metódusra egy pointer, amit meg szeretnél hívni. Ez egy úgynevezett pointer-to-member típus, részleteket lásd itt. 2. Arra a példányra egy pointer, amin meg szeretnéd hívni a metódust. Ez egy mezei mutató, esetedben ID3D11Device* típusú. A C++-ban nincs olyan beépített típus, ami ezt a két mutatót összefogná egybe, de ha szükséged van rá, akkor persze csinálhatsz rá sajátot. | |
| Perseus hozzászólása Csaboka2 (08:47) részére | előzmény | privát | 2012.07.02. 11:32 | válasz |
Hát igen. Ezt a leírást én is olvastam. Az ez alapján készített verzió:typedef HRESULT (__stdcall ID3D11Device::*cVertex)(const void*, SIZE_T, ID3D11ClassLinkage*, ID3D11VertexBuffer**);error C2064: term does not evaluate to a function taking 4 arguments. Erre próbáltam rákeresni de nem találtam semmi okosságot | |

