问一个小问题

weikeli19 2020-07-28 09:10:39
各位大神好 我问一个问题 为什么在msdn官方网站文档上搜不出_ConnectionPtr? 你们别对我说什么上csdn上搜 百度搜 我现在就问的是msdn上怎么没有说明?什么原因 ? 还有如果msdn上没有说明 程序员又怎么会知道有_ConnectionPtr这么个玩意儿? 谢谢 求解我疑惑 如果msdn官方网站文档上能搜到 请把链接地址发给我 谢谢了
...全文
113 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
_mervyn 2020-07-30
  • 打赏
  • 举报
回复
引用 2 楼 weikeli19 的回复:
你好 你发我的这个链接 并未提起_ConnectionPtr这个智能指针啊 麻烦看清一下我的问题 谢谢
你是想了解ado的Connection 还是想了解智能指针? 明确自己的问题,才知道如何搜索问题。 如果是之前就了解过智能指针,对于没有在msdn上搜出_ConnectionPtr的现象,应该是不难理解的,因为很容易猜到这个类型只是个typedef,如果想不到这一层,就得先去了解什么是智能指针。 当你了解过后,想必也知道它一般的实现就是一个 模板类,代理对指定类型指针的操作。一般不需要看智能指针是如何实现的,而只需要了解被代理的类(也就你这里的Connection)如何使用就可以了。 2楼以为你的需求就是如此,所以才给你这个的链接。 然后,如果你真的对智能指针内部感兴趣,最直接的方法,也该是在你的IDE中直接定位它的typedef,知道了它的真正类型后,才能继续深入。而不是直接莽撞的上网搜索。 说回到你具体的问题,你想知道_ConnectionPtr是什么,难道不应该先找到它所在的头文件看看?这点利用IDE非常容易。定位_ConnectionPtr,就会发现在msado15.tlh中有一句:
_COM_SMARTPTR_TYPEDEF(_Connection, __uuidof(_Connection));
发现微软它是利用宏定义的,接着定位_COM_SMARTPTR_TYPEDEF宏,发现其是在comdef.h这样定义的:
#define _COM_SMARTPTR_TYPEDEF(Interface, IID) \
    typedef _COM_SMARTPTR<Interface, &IID> \
            Interface ## Ptr
而_COM_SMARTPTR则是:
 #define _COM_SMARTPTR        _com_ptr_t
到此,你就应该知道,_ConnectionPtr真正类型应该是:
 _com_ptr_t<_Connection,__uuidof(_Connection)> 
模板类,一般你能在头文件中直接看到其实现,所以可以继续定位 _com_ptr_t,就能发现其在comip.h这个头文件中是如何实现的。当然你既然知道了这个类型,想必在msdn上直接搜这个类型 _com_ptr_t,那肯定就有文档了: https://docs.microsoft.com/zh-cn/cpp/cpp/com-ptr-t-class?view=vs-2019 说了那么多,其实我就是想让你明白,你真正应该搜的是什么,如何知道有_com_ptr_t这么一个类? 如何找到这个类的过程很重要。 因为我看了你之前提的问题,让我甚是担心:
引用 2 楼 weikeli19 的回复:
问一下HANDLE这个句柄的定义怎么在msdn上查不到啊????怎么回事
为什么就不利用一下你的IDE,转到HANDLE的定义呢? 轻轻一点,你就能知道它只是个void* :
typedef void * HANDLE
你还会问 void*是什么吗?
weikeli19 2020-07-29
  • 打赏
  • 举报
回复
你好 你发我的这个链接 并未提起_ConnectionPtr这个智能指针啊 麻烦看清一下我的问题 谢谢

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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