بسم الله الرحمن الرحيم,
رغم اني لم ارى  ردود تشعرني ان هناك مهتمين, الا اني سوف اكمل شرح هذا الموضوع على الاقل:
رابطة  الدرس الاول
عوده الى موضوعنا, لنستطيع عمل الاتي :
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;
}