الدرس الثاني للمؤشرات الى الدوال

الناقل : elmasry | الكاتب الأصلى : Super_emad55 | المصدر : www.arabteam2000-forum.com

بسم الله الرحمن الرحيم,
رغم اني لم ارى ردود تشعرني ان هناك مهتمين, الا اني سوف اكمل شرح هذا الموضوع على الاقل:

رابطة الدرس الاول
عوده الى موضوعنا, لنستطيع عمل الاتي :

void main()
{
        cout << New_Switch(10, 20, Plus)<< endl;
        cout << New_Switch(10, 20, Divide) << endl;
}

 يجب ان نقوم بكتابت الداله الاتيه

float New_Switch(float a, float b, PF function)
{
        return function(a, b);
}

لنعرض موضوع اخر للتوضيح
لنفرض ان لدينا هتان الدالتان لطباعة كلمه مثلا, و لتكن بالشكل الاتي:
void print1(char * string)
{
        cout << "[" << string << "]" << endl;
}

void print(char * string)
{
        cout << string << endl;
}

void main()
{
         print(“one”);
        print(“two”);
}


فنقوم بتكوين الداله الاتيه كمؤشر لدوالنا

void (* PF) (char * string) typedef



و نضعها قبل ال main

فيصبح برنامجنا بالشكل هذا
#include <iostream>
using namespace std;


void print1(char * string)
{
        cout << "[" << string << "]" << endl;
}

void print(char * string)
{
        cout << string << endl;
}

typedef void (* PF) (char * string);

void main()
{
        PF printfunction;
        printfunction = print;  
        printfunction("one");

        printfunction = print1;
        printfunction("one");
}

بالاضافه الى هذا يمكننا ان نقوم بعمل مصفوفه من المؤشرات الى الدوال, ف ال main تكون بهذا الشكل

void main()
{
        PF doit[] = {Plus, Minus, Multiply, Divide};

        for(int i = 0; i<4; i++)
        cout << doit[i](5, 10) << endl;
}