为什么这样转就不行啊??

clicksoft 2005-09-22 10:56:36
为什么这样转就不行啊??


interface IX : IUnknown
{
virtual void __stdcall fx() = 0;
};


class CA : public IX
{
public:
virtual HRESULT __stdcall QueryInterface(const IID& iid,void** ppv)
{

if(iid == IID_IUnknown)
{
*ppv = static_cast<IUnknown*>(this); //error:error C2594: 'type cast' : ambiguous conversions from 'class CA *const ' to 'struct IUnknown *'

*ppv = static_cast<IX*>(this); // ok
}


IX 不也是从 IUnknown派生的吗???
...全文
83 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
roscoe 2005-09-25
  • 打赏
  • 举报
回复
星星是对的,你没写public 意味IX: private IUnknown.
C++的安全机制是不允许访问的
goodboyws 2005-09-23
  • 打赏
  • 举报
回复
同意zxyjyzxyjy
clicksoft 2005-09-23
  • 打赏
  • 举报
回复
up
clicksoft 2005-09-22
  • 打赏
  • 举报
回复
我说的是 *ppv = static_cast<IUnknown*> 这样 不行

提示:error C2594: 'type cast' : ambiguous conversions from 'class CA *const ' to 'struct IUnknown *'

跟IX没有关系啊
zxyjyzxyjy 2005-09-22
  • 打赏
  • 举报
回复
interface IX : IUnknown
改为interface IX : public IUnknown

碧螺春的马甲 2005-09-22
  • 打赏
  • 举报
回复
应该用 QueryInterface吧!
clicksoft 2005-09-22
  • 打赏
  • 举报
回复
*ppv = static_cast<IUnknown*> 不行

ppv = static_cast<IX*>(this); 可以

这是怎么回是啊??

IX 不也是从 IUnknown派生的吗???
clicksoft 2005-09-22
  • 打赏
  • 举报
回复
up

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧