智能指针的指针怎么做?
用ATL写一个插件。我需要从主程序获得一个对象的数组。
函数的定义是这样的:
virtual HRESULT __stdcall IGetWires (
/*[in]*/ long * Count,
/*[out,retval]*/ struct IWire * * * Wires ) = 0;
第一个参数是数组的长度,第二个参数是返回的对象。
如果不用CComPtr可以这样写:
IWire **pWires ;
hres = pRoute->IGetWires(&i,&pWires);
但是如果使用智能指针CComPtr我该怎么定义呢?我尝试了
CComPtr<IWire> *spWires ;
hres = spRoute->IGetWires(&i,&spWires);
和
CComPtr<IWire*> spWires ;
hres = spRoute->IGetWires(&i,&spWires);
但是上面两种写法都不对。
小弟第一次使用智能指针CComPtr,对它还不太了解,还请各位赐教。
函数的定义是这样的:
virtual HRESULT __stdcall IGetWires (
/*[in]*/ long * Count,
/*[out,retval]*/ struct IWire * * * Wires ) = 0;
第一个参数是数组的长度,第二个参数是返回的对象。
如果不用CComPtr可以这样写:
IWire **pWires ;
hres = pRoute->IGetWires(&i,&pWires);
但是如果使用智能指针CComPtr我该怎么定义呢?我尝试了
CComPtr<IWire> *spWires ;
hres = spRoute->IGetWires(&i,&spWires);
和
CComPtr<IWire*> spWires ;
hres = spRoute->IGetWires(&i,&spWires);
但是上面两种写法都不对。
小弟第一次使用智能指针CComPtr,对它还不太了解,还请各位赐教。
...全文
相关推荐
C++智能指针用法详解
"C++智能指针是为了解决C++中手动内存管理的问题,通过自动调用析构函数释放内存,防止内存泄漏。本文详细介绍了7种常见的智能指针:std::auto_ptr、boost::scoped_ptr、bo
C++实现智能指针
当然,这只是一个基本的实现示例,实际应用中可能需要考虑更多的细节,比如线程安全性、自定义删除器等。但是,通过上述实现,你可以了解智能指针的基本原理和用法,并在实际开发中使用它来提高代码的安全性和可维护性。在拷贝赋值运算符中,我们首先检查是否为自赋值,然后递减当前对象的引用计数,如果引用计数减为零,则释放资源。智能指针是C++中一种重要的资源管理工具,它可以帮助程序员自动管理动态分配的内存,避免内存泄漏和悬挂指针等问题。如果指针不为空,我们会为引用计数分配内存,并将其初始化为1,表示有一个指针指向了资源。
C++智能指针实例详解
"C++智能指针是解决C++中手动内存管理问题的一种高效工具,能够自动释放new分配的内存,防止内存泄漏。本文详细介绍了多种智能指针的使用,包括std::auto_ptr、boost::scoped_
C++11 智能指针之shared_ptr代码详解
因此,在使用原始指针来构造shared_ptr之前,必须确保这个原始指针是没有被其他智能指针所持有的。
c++句柄,智能指针 指针间的区别
* 智能指针可以用来处理线程安全、提供写时赋值、提供远程交互服务以及扩展指针方法等。* 智能指针类将指针变量作为成员变量封装起来,在智能指针类对象离开作用域时,会再析构的过程中完成指针的释放。


