Com ATL接口指针:替换get和put_

Com ATL接口指针:替换get和put_,com,properties,atl,smart-pointers,Com,Properties,Atl,Smart Pointers,很多年前我做过ATL编程,现在又走上了这条路。我记得上一次,编译器有一种自动优化put_uu和get_uu(即属性)的方法。我真的不知道上次我是怎么做的 目前我正在这样做: // assume p is a pointer to an interface CComBSTR name; p->get_Name(&name); 这段代码真的让我头疼,我相信有更好的方法: // can we do this? CComBSTR name(p->get_Name()); // or

很多年前我做过ATL编程,现在又走上了这条路。我记得上一次,编译器有一种自动优化put_uu和get_uu(即属性)的方法。我真的不知道上次我是怎么做的

目前我正在这样做:

// assume p is a pointer to an interface
CComBSTR name;
p->get_Name(&name);
这段代码真的让我头疼,我相信有更好的方法:

// can we do this?
CComBSTR name(p->get_Name());
// or maybe this
CComBSTR name(p->Name);

我不知道如何使用CComPtr和_com\u ptr\t来实现这一点。还要注意,p是指向同一库中接口的指针。所以我没有使用#导入或任何东西。

CComBSTR名称(p->name);是正确的

如果您使用了
#import
,它会为您创建这些属性样式访问器。@RomanR。这是正确的。但我处理的是同一个库中的接口。我不知道该怎么做。在同一个库中,您手头没有这些访问器,而是使用带有原始指针的
\u I.h
文件。当然,您可以创建一个helper类,但这样做无法自动获取它们。我认为您可能需要将类型库重新导入到一个侧名称空间中,并让这些代码通过这些自动生成的类访问您的私有接口指针。“我不认为我会自己做这件事,但看起来还是可行的,而且可能会有所帮助。”罗曼。如果导入库自己的tlb(在Debug and Release文件夹中),我就能让它工作。不确定是否有更整洁的方法。