मैं अलग-अलग तर्कों के साथ कार्य करने के लिए फ़ंक्शन पॉइंटर असाइन करने में सक्षम होने का तरीका जानने का प्रयास कर रहा हूं।सी ++: तर्क सूचकांक तर्कों की चर संख्या के साथ कार्य करने के लिए
मेरे पास एक समय लूप है जो सशर्त कथन के रूप में कई अलग-अलग कार्यों को लेता है, इसलिए एक ही कोड के अंदर लूप के साथ एकाधिक लिखने की बजाय मैं एक फ़ंक्शन पॉइंटर के साथ एक रखना चाहता हूं। सभी कार्य प्रारूप bool f(...)
के प्रारूप हैं। मुझे लगता है कि कुछ कोड सबसे अच्छा उदाहरण देकर स्पष्ट करना होगा कि मैं क्या मतलब है:
int a, b, c, d;
MyClass* my_class;
typedef bool (MyClass::*my_fun_t)();
my_fun_t my_fun;
if (condition1)
my_fun = &MyClass::function_one();
else if (condition2)
my_fun = &MyClass::function_two(a, b);
else if (condition3)
my_fun = &MyClass::function_three(a, b, c);
else if (condition4)
my_fun = &MyClass::function_four(a, b, c, d);
while ((my_class->*my_fun)())
{ ... }
अब इस जाहिर है क्योंकि कार्यों अलग हस्ताक्षर है काम नहीं करता। क्या यह एक समान फैशन में काम करना संभव है? क्या Functoids कुछ मुझे देखना चाहिए?
यदि आप नहीं जानते कि यह कितना तर्क लेता है तो आप उस फ़ंक्शन पॉइंटर को कैसे लागू करें? – mfontanini
ध्यान दें कि फ़ंक्शन पॉइंटर को असाइनमेंट का आपका सिंटैक्स वैसे भी अमान्य है, आप * कार्यों को आविष्कार कर रहे हैं, परिणाम ले रहे हैं, अपने अस्थायी स्टोरेज में पॉइंटर प्राप्त कर रहे हैं, और उस * को * उस * को निर्दिष्ट करें जो आपने पहले घोषित किया था। –
हाँ मुझे पता है कि यह काफी वैध वाक्यविन्यास नहीं है। यह सिर्फ विचार दिखाता है। – jaho