توجيهة التضمين
توفر لغة c++ توجيه include لتضمين المكتبات المتوفرة لديك ,هذا إن كانت مكتبة أساسية مثل iostream أو إن كانت خاصة بك , وبما أن لغة c++ مقسمة إلى قسمين , قسم التصريح (header) وقسم المصدر (cpp) فلابد من شي للربط بينهما , وهي include# .
القاعدة :
#include <iostream> // تضمين المكتبات الأساسية standard C++ library .
#include "class1.h" // تضمين المكتبات الخاصة فيك
يمكنك التبديل بينهما لكن يفضل إستخدامهم كما هم , للتفريق بين المكتبات الأساسية والخاصة فقط لاغير .
قسم التصريح header.h :
في هذا القسم يجب عليك التصريح على الأعضاء التي تريد استخدامها مثل (مجال الأسماء numespace ,فئات class, تركيبات struct, تعدادات enum ..) , في هذا القسم يفضل أن لاتكتب أي كود (يمكنك كتابة الكود فيه) ولايفضل ذلك لأنه صمم فقط للعرض الأولي للكود البرمجي ,وعندما تكتب الكود فيه يفقد خاصيته التي صمم من أجلها , لنأخذ مثال على ذلك وليكن لدينا الملف class1.h :
#include <iostream>
class class1
{
public:
class1(int y);
~class1();
void add(int num) { x += num; }
void show();
private:
int x;
};
الآن أصبح لدينا مكتبة خاصة بنا وهي class1.h ,يمكن أن نستدعيها بواسطة التوجيه include# إلى الملفات المصدرية الأخرى .
* تضمين المكتبة مرة واحدة فقط :
تختلف هذه التوجيه حسب المترجم التي تكتب فيه الكود الخاص فيك ففي محرر Visual c++.net يوجد التوجيه pragma once أما في محرر qt مثلا فيستخدم التوجيات المتوفرة .
1- visual c++ .net :
pragma once
class name
{
....
};
2- Qt Creater editor :
#ifndef X_H
#define X_H
class name
{
....
};
#endif // X_H
قسم المصدر source.cpp :
إذا كان ذلك القسم للعرض الأولي للكود فهذا القسم هو اللب الأساسي للكود ,ومن خلاله يمكنك أن ترينا إبداعك البرمجي , فكل ماسبق من تعريف لن يعمل إلا بكتابة الكود المناسب له , وهذا لايلزمك أن تكتب الكود لكل الأعضاء التي عرفتها في الأعلى :
#include "class1.h"
class1::class1(int y)
{
x = y;
}
class1::~class1()
{
x = 0;
}
void class1::show()
{
std::cout << x;
}
الملف الأساسي main.cpp :
بعد كتابة المكتبة الخاصة بك والإنتهاء منها لابد من تنفيذها , وهو من استدعائها في دالة main الموجودة في الملف main.cpp , وبما أن الملف من (المصدر) اي امتداده هو .cpp أي لن يتم تنفيذ الكود الخاص فيك بدون تضمينها بواسطة include# , تابع الكود التالي :
#include "class1.h"
int main(int argc, char *argv[])
{
class1* cla_;
cla_ = new class1(20);
cla_->add(30);
cla_->show();
return 0;
}
الخرج:
50