القسم نائم، و إليكم سؤال يجعلك تفكر قليلا.
هل كتبت أكواد تستخدم الـ template من قبل؟ هل تعتقد انك لديك معرفة جيده بها؟
إذا كانت إجابتك بلا لذا مرحبا بك فأنت على وشك انت تتعلم بعض الأمور التى لم تراها من قبل، و إذا كانت إجابتك بنعم فمرحبا بك فى إثراء الموضوع بإسلوب و أفكار لا نعلمها.
داخل مكتبة STL للإصدار C++11 توجد الفئه array و هى حاوية لمصفوفه بحجم ثابت يمكن إجراء عمليات عليها و يمكنك الحصول على معلومات عنها من الرابط.
المطلوب بسيط هو ان تكتب فئة array تحتوى على دالة واحده فقط copy و هى member function حيث يمكنها نسخ محتويات مصفوفة أخرى حجمها يساوى أو لا يساوى الحجم الذى عرفت به المصفوفه الناسخه. الدالة copy لابد و أن يتم كتابة الكود الخاص بها خارج تعريف الفئه array و إليك مثال:
template<typename T, int N>
struct array
{
T e[N];
// place copy function declaration here
};
// place copy function definition here
int main()
{
array<int, 3> a = { {0, 1, 2} };
array<int, 10> b = { {0} };
b.copy(a);
}الدالة copy لا تعيد قيمة و تنسخ قيمة المصفوفه المدخله إليها بدءا من أول عنصر بالمصفوفه المدخله إلى أول عنصر بالمصفوفة الناسخه بمعنى أول ثلاثة عناصر بالمصفوفه b ستصبح بهم القيم 0 و 1 و 2 و البقيه يتركوا كما هم.
دائما سيتم النسخ بعدد العناصر الأقل فإذا كان عدد عناصر a اكبر من عدد عناصر b حينها b ستنسخ من عناصر a ما يساوى عدد عناصرها بدءا من العنصر بالموقع صفر.
الكود المكتوب لابد من امكانية تنفيذه على مترجم يدعم C++03 و C++11.
و الله ولي التوفيق