質問

私は現在、コンパイル時間を短縮することが含まれるリファクタリングのプロセスを通じてつもりだ、と私は以下のコンパイルエラーに遭遇しました。

[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 ++ことを教えてくれます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top