bsh*_*52s 5 .net casting c++-cli visual-c++
我不得不用gcroot做一些奇怪的事情,但我在动态转换线上得到以下错误:"不能使用'dynamic_cast'从'gcroot'转换为'IMyInterface ^'.在C#中,你可以很容易地投出一个任何接口的泛型对象.如果对象没有实现接口但是它会编译,你可能会遇到运行时错误.
gcroot<Object^> m_pDataObject;
IMyInterface obj = dynamic_cast<IMyInterface^>(m_pDataObject);
Run Code Online (Sandbox Code Playgroud)
Ste*_*end 11
这工作(编译),应该做你想要的(模块更换 IDisposable为你需要的接口):
gcroot<Object^> m_pDataObject;
Object^ obj = m_pDataObject; // implicit conversion from gcroot<>
IDisposable^ intf = dynamic_cast<IDisposable^>(obj); // or safe_cast<>
Run Code Online (Sandbox Code Playgroud)
gcroot <>是一个智能指针.您可以强制转换以获取跟踪句柄:
IMyInterface^ itf = dynamic_cast<IMyInterface^>((Object^)m_pDataObject);
Run Code Online (Sandbox Code Playgroud)
史蒂夫的答案很顺便.
| 归档时间: |
|
| 查看次数: |
2757 次 |
| 最近记录: |