Ambiguità tra IID_IDropTarget e Virtualtrees :: IID_IDropTarget
-
19-09-2019 - |
Domanda
Sono attualmente in corso attraverso un processo di refactoring include per ridurre il tempo di compilazione, e ho incontrato il seguente errore di compilazione:
[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'
La riga di codice a cui punta è:
if (iid == IID_IUnknown || iid == IID_IDropTarget)
Se uso Virtualtrees::IID_IDropTarget
si compila bene, però ho bisogno di usare l'interfaccia COM IDropTarget che ho implementato. Credo che il problema potrebbe essere che il componente Virtualtrees ha un'altra implementazione dell'interfaccia IDropTarget e sono in conflitto.
Tutte le idee come posso specificare che I non vuole Virtualtrees::IID_IDropTarget
? O lo spazio dei nomi che uso per IID_IDropTarget di COM?
Soluzione
di COM IID_DropTarget
è dichiarata in questo modo:
EXTERN_C const IID IID_IDropTarget;
Dal momento che è extern "C"
, è nello spazio dei nomi root:
::IID_IDropTarget
Altri suggerimenti
premettere al nome con "::" - specificarlo come ::IID_IDropTarget
-. Questo sarà effettivamente dirà C ++ che si desidera quello da namespace globale