Ambiguidade entre IID_IDropTarget e Virtualtrees :: IID_IDropTarget
-
19-09-2019 - |
Pergunta
Atualmente estou passando por um processo de refatoração inclui a reduzir o tempo de compilação, e eu me deparei com o seguinte erro de compilação:
[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'
A linha de código que aponta para é:
if (iid == IID_IUnknown || iid == IID_IDropTarget)
Se eu usar Virtualtrees::IID_IDropTarget
ele compila bem, porém eu preciso usar a interface OCM IDropTarget que tenho implementado. Eu acredito que o problema pode ser que o componente Virtualtrees tem outra implementação da interface IDropTarget e eles são conflitantes.
Alguma idéia de como posso especificar que eu não quero Virtualtrees::IID_IDropTarget
? Ou o namespace eu uso para IID_IDropTarget do COM?
Solução
O COM IID_DropTarget
é declarado assim:
EXTERN_C const IID IID_IDropTarget;
Desde a sua extern "C"
, é no espaço de nomes root:
::IID_IDropTarget
Outras dicas
Prepend o nome com "::" - especifique-o como ::IID_IDropTarget
-. Isto efetivamente dizer C ++ que deseja o de namespace global