我目前正在经历一个重构过程,以减少编译时间,并且遇到了以下编译错误:
[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 IDropTarget接口(interface)。我认为问题可能在于Virtualtrees组件具有IDropTarget接口(interface)的另一种实现,并且它们存在冲突。

有什么想法可以指定而不是不想要Virtualtrees::IID_IDropTarget吗?还是我用于COM的IID_IDropTarget的命名空间?

最佳答案

COM的IID_DropTarget声明如下:

EXTERN_C const IID IID_IDropTarget;

由于它是extern "C",所以它在根 namespace 中:
::IID_IDropTarget

关于c++ - IID_IDropTarget和Virtualtrees::IID_IDropTarget之间的歧义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2234952/

10-11 00:57