c ++ - smart pointers i Windows programmering

Indlæg af Hanne Mølgaard Plasc

Problem



Undtagen STL fandt jeg kun CComPtr i C ++ Windows programmering. Er der andre typer af smarte peger i Windows SDK? Tak.

Bedste reference


For det første er STL 's og boost' s smarte pointere tilgængelige på Windows, og der er ikke noget galt med at bruge dem.


Tale om rent Windows stuff, COM interface pointers, med deres AddRef/Release levetid ledelsesmodel, giver let til kloge pointers. Der er nogle kloge pegerklasser i Windows-specifikke biblioteker, der er rettet mod opbevaring af COM-grænsefladepegere. Udover ATLs CComPtr <>, er der \_com\_ptr\_t <> af Microsoft native COM og MFCs COleDispatchDriver. Sidstnævnte er næsten aldrig brugt med fremkomsten af ​​native COM. Med undtagelse af CComPtr anvendes disse sammen med type bibliotek import faciliteter.

Andre referencer 1


I Windows SDK (specifikt for ATL) er der CAutoPtr (single item allocation) og CAutoVectorPtr (array allocation).

Andre referencer 2


MSDN-artiklen angiver, at CComPtr er designet til kun at bruges sammen med COM-objekter. Generelt Boost smart pointers bruges som et platform uafhængigt C ++ smart pointer bibliotek. Da begrebet smart pointers ikke er bundet til et bestemt operativsystem, er der virkelig ingen grund til at bruge en smart pointer implementering bundet til Windows, selvom det er den eneste platform, du planlægger at udvikle applikationen til. [1] [2]