سؤال

وكما يوحي العنوان، هل هو صحيح أو صالحة لاستيراد / تصدير بيانات ثابتة من داخل C ++ الدرجة؟

وتبين لي مشكلتي - المؤلف من الطبقة كنت أبحث في كان يحاول تصدير بيانات ثابتة للكتابة غير معتمدة على هذه المنصة

.

وشكرا جزيلا للردود ولكن.

هل كانت مفيدة؟

المحلول

هل صحيح بقدر ما سوف تعمل وتفعل ما كنت تتوقع أن؟ على افتراض أن كنت تتحدث عن استخدام _declspec (dllexport / dllimport) على عضو الفئة أو الطبقة، نعم، يمكنك أن تفعل ذلك، وينبغي أن تعطيك النتيجة المتوقعة - ان بيانات ثابتة تكون في متناول خارج DLL الخاص بك وغيرها من C كود ++ يمكن الوصول ذلك شريطة أن أن C ++ مواصفات وصول (الجمهور / الحماية / خاصة) لن منع الوصول الخارجي في المقام الأول.

هل هو فكرة جيدة؟ أنا شخصيا لا أعتقد ذلك كما تحب أن تعريض الداخلية من الدرجة ليس فقط داخل المكتبة ولكن على العالم الخارجي، الأمر الذي يعني أنها سوف تكون جميلة من المستحيل الكثير لتغيير ما هو تفصيل تطبيق في نهاية اليوم. اسأل نفسك إذا كنت 100٪ معين إذا كان واجهة لهذه الفئة، وأجزاء كبيرة من تنفيذه سوف أبدا، من أي وقت مضى تغيير ...

نصائح أخرى

وهناك تصدير C ++ الدرجة تعني أن العملاء DLL تضطر إلى استخدام نفس المترجم مثل DLL بسبب اسمه تغيير اسم وغيرها من القضايا. هذا هو في الواقع مشكلة كبيرة جدا، وكان لي مرة واحدة لكتابة مغلفة C إلى مجموعة من الطبقات C ++ لأن برامج العميل قد تحولت إلى MSVC9، في حين أن DLL نفسه كان يستخدم MSVC71. [وكانت هناك بعض المضاعفات الأخرى مع تبديل DLL إلى MSVC90]. ومنذ ذلك الحين لقد كنت متشككا جدا حول هذه الأعمال التجارية من تصدير الطبقات، ويفضل أن يكتب المجمع C على كل شيء.

والآن، إذا كنت على استعداد لدفع الثمن من تصدير الطبقات، وأود أن أقول أن تصدير بيانات ثابتة لا يجعل المشكلة أي أسوأ من ذلك. يمكن القول، من بين أنواع الأشياء التي يمكن تصدير، فمن الأسلم لتصدير الثوابت ثابتة. وحتى مع ذلك، وأنا أفضل عدم القيام بذلك، لأن مثل يقول تيمو، كنت تخوض الآن في هذا التنفيذ.

واحدة من الأطر التي عملت على حاجة عملائها لتوفير مجموعة من الثوابت رمز الخطأ. مع مرور الوقت، وجدنا أن استخدام حفنة بسيطة من الثوابت كان هش جدا، وتحولنا إلى تصميم OO. كان لدينا تطبيق الافتراضي الذي سيعود رموز الخطأ الشائعة، ولكن تم الوصول لكل من رموز الخطأ باستخدام دالة الظاهري الذي يمكن التغلب عليه من العملاء الأفراد - وهم استخدامه من بعض الأجهزة المتقدمة معالجة الخطأ المحدد. هذا الحل أثبت <م> الآن أكثر استيعابا من واحدة على أساس تصدير الثوابت.

وأنا أقترح أن تفكر طويل وشاق حول كيفية تتوقع المكون لتتطور قبل تصدير المتغيرات ثابتة.

وdllexport (أو استيراد) على (غير ثابت) عضو بيانات فئة من لا يفعل شيئا. تصدير "الأشياء" إما أن تكون وظائف أو البيانات العالمية (رغم أن هذا هو اختيار تصميم مشكوك فيه). dllexport على فئة هو مجرد اختصار لقوله "تصدير جميع هذه الوظائف".

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