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