سؤال

أذهب حاليا لعملية إعادة التدوير تشمل الحد من وقت الترجمة، واجهت خطأ الترجمة التالية:

[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 ++ التي تريدها واحدة من مساحة الاسم العالمية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top