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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top