سؤال

أحاول إنشاء مشروع .NET C++ جديد من البداية.أخطط لخلط التعليمات البرمجية المُدارة وغير المُدارة في هذا المشروع.

موضوع المنتدى هذاكائن معرف البيانات:خطأ رمز غامض يجيب على مشكلة رأيتها عدة مرات.

Post #4 حالات "حرك كل" استخدام مساحة الاسم XXXX "من .h إلى .cpp"

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

void loadConfigurations(String^ pPathname);

كيف من المفترض أن أتحرك باستخدام العبارات الموجودة في ملف .cpp واستخدام مساحات الأسماء المطابقة في ملف .h؟

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

المحلول

إنها فكرة جيدة أن تستخدم دائمًا الأسماء المؤهلة بالكامل في ملفات الرأس.بسبب ال using يؤثر البيان على كافة التعليمات البرمجية التالية بغض النظر عن #include, ، وضع أ using تؤثر العبارة الموجودة في ملف الرأس على كل شخص قد يتضمن هذا الرأس.

لذلك يمكنك تغيير إعلان وظيفتك في ملف الرأس الخاص بك إلى:

void loadConfigurations(SomeNamespace::String^ pPathname);

حيث SomeNamespace هو اسم مساحة الاسم التي كنت عليها using سابقًا.

نصائح أخرى

لا أعرف الكثير عن .NET، لذا تنطبق إجابتي فقط على الجزء غير المُدار من c++ من سؤالك.شخصيا ، هذا أحد الأسباب الرئيسية التي أتجنبها مثل الطاعون "باستخدام مساحة الاسم xxxx ؛" صياغات.

أفضل أن أكون صريحًا مع مساحات الأسماء مثل "std::cout << "hello World" << std::endl;"

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

هذه مسألة رأي وذوق بحت.

أما بالنسبة لما يجب فعله في العناوين، فأنا أكتب أشياء مثل هذا:"باطل f(const std::string &s);"

لحل هذه المشكلة قمت بذلك في ملف .h:

namespace TestClassNS
{
  class TestClass;
}

وبعد ذلك في ملف .cpp، سأقوم بتضمين ملف .h الذي كان TestClass موجودًا فيه واستخدام مساحة الاسمTestClassNS هناك.

إن لغة C++ الخاصة بي صدئة، لذا قد تكون هناك طريقة أفضل.

في تجربتي، مساحة الاسم الوحيدة التي يجب أن تكون حذرًا بشأنها هي النظام نفسه.إنه أمر مزعج إلى حد ما أن الأكثر شيوعًا والأكثر أهمية هو المكان الذي تجد فيه المشاكل، ولكن هذه هي الحياة.

على الأقل يمكنك أن تشعر بالارتياح لأنه إذا كنت تقوم بإنشاء فئات مُدارة، فإن مشكلات التضمين التي تواجهها سيتم حلها عند حاجز التجميع، على عكس المشكلات المتعلقة بملفات الرأس للفئات غير المُدارة.

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