السلام عليكم إخواني أخواتي، رمضان كريم كله مغفرة وأجر وثواب إن شاء الله.
السي ++ لغة برمجة قوية لا يسعنا ذكر ميزاتها لذلك ندخل مباشرة في صلب الموضوع:
نفترض أنّ الكلاس Point تم تصريحها في كلا الملفين Point.h و Point.cpp
ملفين الواجه والتنفيذ في المرفقات مع الملف الرئيسي.
لاحظ السطر رقم 10:
Point p3();
هنا يكمن الخطأ المنطقي وهو: الإعتقاد أنّ التصريح بمعرف كائن متبوع بقوسين فارغين يستدعي المصمم الإفتراضي ( default constructor ) للكلاس.
هنا القوسين هما تابعان للمعرف أي p3() هو اسم الكائن ويمكنك إستدعاء الدالة getX() على سبيل المثال كالتالي:
p3().getX();
إذا فالكتابة p3.getX() تعتبر خطأ كتابة وتجد مترجم مايكروسوفت visual c++ 2010 express يصدر التالي:
[error C2228: left of '.getX' must have class/struct/union
error C2065: 'p3' : undeclared identifier
وأيضا اجتنب المعرفات المتبوعة بالقوسين لأنّ استدعاء الدوال ( functions ) بها قد يؤدي إلى أخطاء وقت التنفيذ والله أعلم.
والسلام عليكم.
أخوكم إلياس.
المفضلات