문제

나는 현재 컴파일 시간을 줄이기 위해 리팩토링 과정을 겪고 있으며 다음 컴파일 오류를 발견했습니다.

[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 ++에게 글로벌 네임 스페이스에서 원하는 것을 효과적으로 알려줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top