الاستفسار لتلافي الوقوع في أخطاء من استخدام كلاس غير مصممه للاستخدام مباشرة ( كلاس مصممه لتورث الى كلاسات اخرى ولكن لا يصح استخدام هذه الكلاس بمفردها) , اريد منع التعامل مع هذه الكلاس بشكل مباشر
مثال للتوضيح ( الكود ليس للتجريب , فقط للتوضيح )
namespace MyNameSpace {
class Parent {
protected:
int varx, vary;
public:
void pMethod(int arg1, int arg2);
int get_X();
int get_Y();
};
class Son1 : Parent {
private:
int var1, var2;
public:
Son1();
Son1(int Arg1, int Arg2);
~Son1();
int sMethod(int Arg1, int Arg2);
};
class Son2 : Parent {
private:
int var1, var2;
public:
Son2(int Arg1);
~Son2();
int sMethod1(int Arg1, int Arg2, int Arg3);
void sMethod2(char *pArg1);
};
}كما موضح في المثال , تم انشاء كلاس Parent , بعدها تم انشاء الكلاس Son1 والتي ترث من الكلاس Parent وتضيف عليها طبعا , وتم ايضا انشاء الكلاس Son2 وهي ايضا ترث من الكلاس Parent وتضيف عليها
الآن ما المشكله ؟؟؟
المشكله هي أن الكلاس Parent مصممه فقط لترثها كل من الكلاس Son1 و Son2 , لكن لا يحق استخدام الكلاس Parent مباشرة في البرنامج لأنها لا فائده لها وحدها
المشكله عند عرض الكلاسات المتاحة استخدامها في الـ namespace الجديد المسمى MyNameSpace يعرض لي الكلاس Parent وطبعا متاح التعامل معها وانشاء كائن منها وكل شيء
يعرضها بهذا الشكل

:s
ونفسي انها تتعرض بهذا الشكل

:D
دي النقطه الاولى
النقطه الثانيه هي:
عند انشاء كلاس وعرفنا فيها متغيرات private أو protected فلماذا يظهرها لي عند استخدام الكائن من هذا الكلاس ؟؟
يعرضها بهذا الشكل

:s
وايضا اتمنى ان تظهر بهذا الشكل

:D
أعرف انها لا تفرق لأن المترجم لن يقبل التعامل مع هذه المتغيرات أو الدوال المعرفه على انها خاصه أو محميه , ولكن اتكلم عن تنظيم الشكل , هل حلها سهل ؟
