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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top