我目前正在经历一个重构过程,包括以减少编译时间,我遇到了以下编译错误:
[C++ 错误] some_class.cpp(53): E2015 'IID_IDropTarget' 和 'Virtualtrees::IID_IDropTarget' 之间存在歧义
它指向的代码行是:
if (iid == IID_IUnknown || iid == IID_IDropTarget)
如果我使用 Virtualtrees::IID_IDropTarget
它编译得很好,但是我需要使用我已经实现的 COMs IDropTarget 接口(interface)。我认为问题可能在于 Virtualtrees 组件具有 IDropTarget 接口(interface)的另一个实现,并且它们存在冲突。
关于如何指定我不想要Virtualtrees::IID_IDropTarget
的任何想法?或者我用于 COM 的 IID_IDropTarget 的 namespace ?
最佳答案
COM 的 IID_DropTarget
声明如下:
EXTERN_C const IID IID_IDropTarget;
因为它是extern "C"
,所以它在根命名空间中:
::IID_IDropTarget
关于c++ - IID_IDropTarget 和 Virtualtrees::IID_IDropTarget 之间的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234952/