Неоднозначность между IID_IDropTarget и Virtualtrees::IID_IDropTarget

StackOverflow https://stackoverflow.com/questions/2234952

Вопрос

В настоящее время я прохожу процесс рефакторинга, чтобы сократить время компиляции, и столкнулся со следующей ошибкой компиляции:

[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, который я реализовал.Я считаю, что проблема может заключаться в том, что компонент Virtualtrees имеет другую реализацию интерфейса IDropTarget, и они конфликтуют.

Любые идеи, как я могу указать, что я не хотеть Virtualtrees::IID_IDropTarget?Или пространство имен, которое я использую для IID_IDropTarget COM?

Это было полезно?

Решение

COM IID_DropTarget объявляется так:

EXTERN_C const IID IID_IDropTarget;

Поскольку это extern "C", он находится в корневом пространстве имен:

::IID_IDropTarget

Другие советы

Добавьте к имени «::» — укажите его как ::IID_IDropTarget - это фактически сообщит C++, что вам нужен файл из глобального пространства имен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top