Ambigüedad entre IID_IDropTarget y Virtualtrees :: IID_IDropTarget
-
19-09-2019 - |
Pregunta
Actualmente estoy pasando por un proceso de refactorización incluye para reducir el tiempo de compilación, y me he encontrado con el siguiente error de compilación:
[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'
La línea de código al que apunta es:
if (iid == IID_IUnknown || iid == IID_IDropTarget)
Si utilizo Virtualtrees::IID_IDropTarget
que compila bien, sin embargo tengo que usar interfaz OCM IDropTarget que he implementado. Creo que el problema puede ser que el componente Virtualtrees tiene otra implementación de la interfaz IDropTarget y que están en conflicto.
¿Alguna idea de cómo puedo especificar que I no que desee Virtualtrees::IID_IDropTarget
? O el espacio de nombres que utilizo para IID_IDropTarget de COM?
Solución
de COM IID_DropTarget
se declara así:
EXTERN_C const IID IID_IDropTarget;
Ya que es extern "C"
, que está en el espacio de nombres raíz:
::IID_IDropTarget
Otros consejos
Anteponer el nombre de "::" - especificarla como ::IID_IDropTarget
-. Esto le dirá efectivamente C ++ que desea que el uno del espacio de nombres global