Mehrdeutigkeit zwischen IID_IDropTarget und Virtualtrees :: IID_IDropTarget
-
19-09-2019 - |
Frage
Ich bin zur Zeit durch einen Prozess des Refactoring gehen beinhaltet die Kompilierung zu reduzieren, und ich habe über den folgenden Compiler-Fehler kommen:
[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'
Die Codezeile verweist er auf ist:
if (iid == IID_IUnknown || iid == IID_IDropTarget)
Wenn ich Virtualtrees::IID_IDropTarget
kompiliert es in Ordnung, aber ich brauche COMs IDropTarget Schnittstelle zu verwenden, die ich umgesetzt haben. Ich glaube, das Problem könnte sein, dass die Virtualtrees Komponente eine weitere Implementierung der IDropTarget Schnittstelle hat und sie sind widersprüchlich.
Irgendwelche Ideen, wie ich angeben kann, dass ich nicht Virtualtrees::IID_IDropTarget
wollen? Oder die Namespace ich für COMs IID_IDropTarget?
Lösung
COMs IID_DropTarget
ist wie so erklärt:
EXTERN_C const IID IID_IDropTarget;
Da es extern "C"
, es ist im Stammnamespace:
::IID_IDropTarget
Andere Tipps
Anfügen der Name mit „::“ - als ::IID_IDropTarget
angeben -. Dies effektiv C ++ sagen wird, dass Sie die eine von den globalen Namespace wollen