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
잘 컴파일하지만 구현 한 COMS IDROPTARGET 인터페이스를 사용해야합니다. 문제는 VirtualTrees 구성 요소에 IDROPTARGET 인터페이스의 또 다른 구현을 가지고 있으며 충돌하고 있다는 것입니다.
내가 그것을 지정할 수있는 모든 아이디어 ~하지 않다 원하다 Virtualtrees::IID_IDropTarget
? 아니면 com의 iid_idroptarget에 사용하는 네임 스페이스?
해결책
com IID_DropTarget
그렇게 선언됩니다.
EXTERN_C const IID IID_IDropTarget;
그 이후로 extern "C"
, 그것은 루트 네임 스페이스에 있습니다 :
::IID_IDropTarget
다른 팁
"::"로 이름을 선발하십시오. ::IID_IDropTarget
- 이것은 C ++에게 글로벌 네임 스페이스에서 원하는 것을 효과적으로 알려줍니다.
제휴하지 않습니다 StackOverflow