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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top