0
有沒有其他的使用以下方法?pin_ptr使用reinterpret_cast或static_cast替代(void **)?
class IGraphBuilder;
public ref class Device
{
private:
IGraphBuilder* pGraphBuilder;
public:
void Configure()
{
pin_ptr<IGraphBuilder*> ppGraphBuilder = &pGraphBuilder;
HRESULT hr = CoCreateInstance(CLSID_FilterGraph,
NULL,
CLSCTX_INPROC,
IID_IGraphBuilder, (void**)ppGraphBuilder);
reinterpret_cast(ppGraphBuilder)編譯但我有點困惑,如果這是正確的這種情況。
如果這不是C++/CLI(其中&NativeMember
實際上意味着interior_ptr<Type>(NativeMember)
)我想簡單地使用static_cast<void**>(&pGraphBuilder)
但即使正確地鑄造pin_ptr
以下不編譯
pin_ptr<IGraphBuilder*> ppGraphBuilder = &pGraphBuilder;
static_cast<void**>(ppGraphBuilder)
有什麼解決辦法還是我我不得不使用(void **),因爲pin_ptr很奇怪?
做,在'C2440錯誤:「的static_cast」:無法從「IGraphBuilder **」轉化爲對「無效**」'這個線程會談同樣的問題... http://stackoverflow.com/questions/3625410/c-static-cast-from-float-to-void/ – NtscCobalt 2012-04-24 21:57:36
@NtscCobalt:你說得對。一個人必須爲第二個演員使用'reinterpret_cast'。這在技術上並沒有改變這個事實,你需要兩次轉換。 – 2012-04-25 07:28:23
是'reinterpret_cast'在這種情況下可以安全地在第一次投射到'IGraphBuilder **'後使用? –
NtscCobalt
2012-04-25 21:34:46