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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top