توجيهة التضمين
توفر لغة 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