הכרזת פונקציה לא ברורה ב c++

nautilus7791

New member
הכרזת פונקציה לא ברורה ב c++

נתקלתי בהכרזה הבאה: typedef int dog_fight(dog& f,int x ;( מישהו יודע אולי מה המשמעות?
 

selalerer

New member
הממ.. לא ידעתי שזה סינטקס חוקי.

בגדול זה נראה כמו הגדרה של סוג של מצביע לפונקציה. בד"כ זה נראה ככה:
typedef int (*dog_fight)(dog&,int);​
(שים לב שהשם עכשיו הוא בתוך סוגריים ויש * לפניו) עכשיו אפשר להגדיר מצביע לפונקציה מהסוג הזה (שמקבלת reference ל-dog ו-int ומחזירה int) כך:
dog_fight pPointerToFunction;​
ולאתחל אותו ככה:
int dog_fight_func1(dog &i_dog1,int i_data) { return i_data; } pPointerToFunction = &dog_fight_func1;​
ואפשר גם בלי ה-&, הקומפיילר מבין גם את זה:
pPointerToFunction = dog_fight_func1;​
והקריאה בעזרת המצביע נראית ככה:
int result = (*pPointerToFunction)(some_dog,12);​
ואפשר גם בלי הסוגריים והכוכבית, הקומלייר מבין גם את זה:
int result = pPointerToFunction(other_dog,344);​
 
למעלה