2010-02-10 4 views
2

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

[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? Или пространство имен, которое я использую для IID_IDropTarget COM?

ответ

1

СОМ IID_DropTarget объявлен следующим образом:

EXTERN_C const IID IID_IDropTarget; 

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

::IID_IDropTarget 
1

Подготовить имя с помощью «::» - указать его как ::IID_IDropTarget - это эффективно скажет C++, что вы хотите получить его из глобального пространства имен.