Ambiguïté entre IID_IDropTarget et Virtualtrees :: IID_IDropTarget
-
19-09-2019 - |
Question
Je vais actuellement par un processus de refactoring comprend pour réduire la compilation, et je suis venu dans l'erreur de compilation suivante:
[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'
La ligne de code il pointe est:
if (iid == IID_IUnknown || iid == IID_IDropTarget)
Si je Virtualtrees::IID_IDropTarget
il compile bien, mais je dois utiliser l'interface COMs IDropTarget que j'ai mis en œuvre. Je crois que le problème pourrait être que la composante Virtualtrees a une autre implémentation de l'interface de IDropTarget et ils sont contradictoires.
Toutes les idées comment je peux préciser que je ne pas veulent Virtualtrees::IID_IDropTarget
? Ou l'espace de noms que j'utilise pour IID_IDropTarget de COM?
La solution
COM de IID_DropTarget
est déclarée comme ceci:
EXTERN_C const IID IID_IDropTarget;
Depuis sa extern "C"
, il est dans l'espace de noms racine:
::IID_IDropTarget
Autres conseils
préfixer le nom avec « :: » - spécifier comme ::IID_IDropTarget
-. Ce sera effectivement dire C ++ que vous voulez que l'un de l'espace global