IID_IDropTargetとVirtualtrees間の曖昧:: IID_IDropTarget
-
19-09-2019 - |
質問
私は現在、コンパイル時間を短縮することが含まれるリファクタリングのプロセスを通じてつもりだ、と私は以下のコンパイルエラーに遭遇しました。
[C++ Error] some_class.cpp(53): E2015 Ambiguity between 'IID_IDropTarget' and 'Virtualtrees::IID_IDropTarget'
それが指すコードの行があります:
if (iid == IID_IUnknown || iid == IID_IDropTarget)
私はVirtualtrees::IID_IDropTarget
を使用している場合、それは罰金コンパイル、しかし私は私が実装したのCOM IDropTargetインターフェイスを使用する必要があります。私はこの問題はVirtualtreesコンポーネントがIDropTargetインターフェイスの別の実装を持っており、彼らは矛盾しているということであるかもしれないと考えています。
任意のアイデアを、私はように指定することができますか。のVirtualtrees::IID_IDropTarget
したくないですか?それとも、私はCOMのIID_IDropTargetに使う名前空間?
解決
COMのIID_DropTarget
はそうのように宣言されます:
EXTERN_C const IID IID_IDropTarget;
それはextern "C"
なので、それがルート名前空間にあります:
::IID_IDropTarget
他のヒント
前に付加して、「::」の名前 - ::IID_IDropTarget
としてそれを指定する - これが効果的に使用すると、グローバル名前空間から1にしたいC ++ことを教えてくれます。
所属していません StackOverflow