如何在ATL应用程序中将std集合用作向量和列表?如果不可能,我可以做什么,除了使用http://msdn.microsoft.com/en-us/library/15e672bd.aspx中描述的集合?我想要例如在列表中存储一些字符串作为在ATL应用程序中使用集合
std :: list < CString> alist。
如何在ATL应用程序中将std集合用作向量和列表?如果不可能,我可以做什么,除了使用http://msdn.microsoft.com/en-us/library/15e672bd.aspx中描述的集合?我想要例如在列表中存储一些字符串作为在ATL应用程序中使用集合
std :: list < CString> alist。
你可以非常高兴地使用它们,你不能通过COM边界来传递它们,因为COM不会;因为它知道stl集合是什么。您可以使用指针将它们传递给进程内COM边界,但请注意,您知道在这种情况下您正在做什么。
是的,请一定要这样做。 STL比大多数ATL类的设计要好(关于异常安全性,通用性等)。
当在集合中存储CCom[Qi]Ptr
时要小心,图书馆可能会抱怨超载的操作符地址。 ATL中有一个包装器。
尽管将集合公开为COM集合是非常困难的。
通过DLL边界传递可能是有害的,因为这两个DLL必须同意他们正在使用哪个版本的运行时库。 – 2012-07-13 16:59:49