为了账号安全,请及时绑定邮箱和手机立即绑定

C++ OBJECT

C++ OBJECT

C++
慕桂英3389331 2018-09-20 17:13:06
C++ OBJECT
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

C++是一个很底层的语言,直接与指针和内存二进制数据打交道的,不存在那些高层语言中的语言原生Object的类型。C++中可以用void*保存各个对象的指针,但它和Object对象是有本质的区别的。

你目前的需求,我估计是要做COM开发。C++里面调用COM比较麻烦,不会像VB或C#那样给你屏蔽底层的细节,你需要了解COM的许多底层机制才能写好相应的代码。

VB中你简单的写一句CreateInstance("WinHttp.WinHttpRequest.5.1")就可以直接得到WinHttpRequest对象了,并且得到了它上面的IWinHttpRequest接口,你可以直接拿来使用。
VB在背后替你做了很多事情,所以你可以很简单的使用,但在C++中就不一样了,你必须一步一步自己来。

VB在背后帮你做了以下事情:
1. 先根据ProgID(比如 "WinHttp.WinHttpRequest.5.1")去找到这个COM类对应的CLSID。使用CLSIDFromProgID()函数使用ProgID查找对应的CLSID。
2. 调用CoCreateInstance(),创建指定CLSID对应的COM对象,得到一个IUnknown接口指向这个COM对象。
3. 调用IUnknown接口上的QueryInterface方法,获得这个COM对象上指定的接口(比如IWinHttpRequest。一个COM对象上可能有多个接口,你得根据IID来指定其中一个)。

至此你才能拿到可以使用的IWinHttpRequest接口。而在C++中,这些都要你自己搞定。
期间涉及到很多COM的概念,如果没有了解过的话可能会很难弄明白,所以如果要在C++下开发COM相关的东西,除非你只想照猫画虎应付一下,否则建议还是补一下COM和ATL的相关基础知识。

查看完整回答
反对 回复 2018-10-20
  • 1 回答
  • 0 关注
  • 789 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信