غموض بين iid_idroptarget و Virtualtries :: 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؟
المحلول
كوم IID_DropTarget
أعلن مثل ذلك:
EXTERN_C const IID IID_IDropTarget;
منذ ل extern "C"
, انها في مساحة الاسم الجذرية:
::IID_IDropTarget
نصائح أخرى
اضغط على الاسم مع "::" - حدده ::IID_IDropTarget
- هذا سوف يخبر بفعالية C ++ التي تريدها واحدة من مساحة الاسم العالمية.