الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]سؤال : كيف نعرف عضو static داخل class

بدأه Abdeljalil في 13 أكتوبر 2013 · 2 رد · 772 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سؤال صغير:
لم لا يمكنني إسناد قيمة لعضو static عرفته داخل كلاس في لغة ++C؟؟

عندما اعرفه يجب ان افعل ذلك دون إسناد، بعدها يجب أن اعرفه خارج الكلاس بإستعمال المعامل ::
لكن ما السبب في ذلك وهل توجد طريقة للتعريف داخل الكلاس نفسه؟

سمعة عن قاعدة إسمها aka one defintion rule لكن لا أعرف ماذا يقصد بها هي أيضا.

ممكن إفادة وشكرا جزيلا.

#2

ممكن رسالة الخطأ ؟

#3

عندما تعطي قيمة للمتغير الثابت فأنت لاتسند له قيمة فقط، بل تحدد أيضاً أي ملف object سيتواجد به هذا المتغير (ملف الـobject هو الملف الذي سيولد بعد تجميع assembling ملف الـcpp).

 

المتغيرات الثابتة في الفئات ستترجم لمتغيرات عامة global في كود الأسمبلي الذي يولده المصرّف، تماماً مثل:

#include <iostream>

char m;

int main(int argc, char **argv) {

  std::cout << m << std::endl;

  return 0;
}

هذه المتغيرات العامة يلزم أن تُوجد منها نسخة واحد في كامل البرنامج ويلزم أن تتواجد في وحدة فقط، ملف cpp، إن كانت هناك وحدات أخرى تستخدمها فيلزمها أن تشير لها فقط (كما لو كنت تعمل extern char m).

 

لو فراضاً كان يمكنك تعريف متغير ثابت في الفئة، ووضعت الفئة في ملف رأسي، وكان عندك ملفين cpp كل منهم يدرج الملف الرأسي هذا فسيحدث هناك خطأ عند مرحلة الربط linking ملفات الـobject وهي أن المتغير العام معرّف في وحدتين منفصلتين.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…