2

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

[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它编译得很好,但是我需要使用我已经实现的 COMs IDropTarget 接口。我相信问题可能是 Virtualtrees 组件具有 IDropTarget 接口的另一个实现并且它们是冲突的。

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

4

2 回答 2

1

在名称前加上“::” - 将其指定为::IID_IDropTarget- 这将有效地告诉 C++ 你想要来自全局命名空间的那个。

于 2010-02-10T06:53:06.777 回答
1

COM 的IID_DropTarget声明如下:

EXTERN_C const IID IID_IDropTarget;

因为它是extern "C",所以它在根命名空间中:

::IID_IDropTarget
于 2010-02-10T06:55:13.207 回答