目前,我正在经历一个过程重构包括减少编译时间,我已经遇到以下编译错误:

[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'

的代码它所指向的行是:

 if (iid == IID_IUnknown || iid == IID_IDropTarget)

如果我使用Virtualtrees::IID_IDropTarget它编译正常,但是我需要使用的我已经实现COM模块接口下降目标。我相信问题可能是,Virtualtrees组件具有界面下降目标的另一种实现方式,他们是相互矛盾的。

任何想法如何,我可以指定我不Virtualtrees::IID_IDropTarget?或命名我使用的COM的IID_IDropTarget?

有帮助吗?

解决方案

COM的IID_DropTarget被声明,如下所示:

EXTERN_C const IID IID_IDropTarget;

由于它是extern "C",这是在根名称空间:

::IID_IDropTarget

其他提示

在前面加上“::”这个名字 - 指定其为::IID_IDropTarget - 这将有效地告诉C ++要从全局命名空间中的一个

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top