2013-04-18 79 views
2

我需要將未知類型的變量從另一個類型轉換爲另一個 類型(SpaceClaim :: Api :: V10 :: Session ^)im與c/cli一起工作,我無法找到任何解決方案從未知變爲另一種類型

來解決這裏的PRB代碼:

gcroot<SpaceClaim::Api::V10::Session^> m_piApplication; 

STDMETHODIMP CEMWCADLinkCtrl::SetEMWCADLinkApplication(IUnknown* pCADApplication) 
{ 
if (pCADApplication == NULL) 
return S_FALSE; 
m_piApplication = (SpaceClaim::Api::V10::Session^)pCADApplication; //error 
    return S_OK; } 

PLZ如果有一個人如何能幫助生病很gratful THKS,

+0

**從不** **投射COM接口指針。使用['QueryInterface()'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms682521(v = vs.85).aspx)和相應的IID並生成輸出接口指針類型爲您需要的界面。 – WhozCraig

回答

0

的IUnknown是所有COM對象,而一個C的基類++/CLI ref類將擁有.NET對象作爲其基類。從一個到另一個都沒有鑄造,因爲它們沒有任何關係。如果你使用C++,你應該調用pCADApplication-> QueryInterface()來獲取你真正需要的接口,然後調用它。我強烈建議使用ATL智能指針來幫助管理引用計數(以及許多其他通常有用的COM幫助函數)。

相關問題