मैं एक कोड अभिव्यक्ति की एक सौ इस तरह के बारे में है कि कारगर बनाने के लिए करना चाहते हैं:रनटाइम पर फ़ंक्शन को अधिभारित करना संभव है?
if(flag)
AddData(key, some_number);
else
AddData(key, error_description);
AddData कहाँ ओवरलोड हो गया है
bool AddData(int key, double value);
bool AddData(int key, const char * error);
के रूप में मैं इस तरह उपरोक्त कोड को व्यक्त करना चाहते हैं :
AddData(key, flag? some_number : error_description);
जो, ज़ाहिर है, संकलन नहीं करेगा क्योंकि ध्वज का मान रनटाइम पर निर्धारित किया जाता है और AddData हस्ताक्षर संकलन समय पर निर्धारित किए जाने की आवश्यकता ।
तरह
bool AddData(int key, bool flag, double value, const char * error);
कुछ में दोनों कार्यों के संयोजन और जो मानकों के उपयोग करने के लिए हल करने और जो अनदेखी करने के लिए काम करेंगे एक है, लेकिन यह सिर्फ सुंदर पर्याप्त नहीं लगती है।
इस प्रकार सवाल: क्या रनटाइम पर फ़ंक्शन ओवरलोडिंग को अधिक उचित तरीके से हल करना संभव है?
'AddData (? कुंजी, झंडा some_number: error_description) ; 'AddData (कुंजी, ध्वज, some_number, error_description) के समान दिखता है; ' – Jarod42
क्या यह महत्वपूर्ण है कि ऑनल y 'someNumber'/'त्रुटि डिस्क्रिप्शन' में से एक का मूल्यांकन किया जाता है?साथ ही, ध्वज प्रत्येक कॉल को एक अलग अभिव्यक्ति है? – Deduplicator
आप फ़ंक्शन पॉइंटर्स का उपयोग कर सकते हैं। इनपुट के आधार पर, उपयुक्त फ़ंक्शन पॉइंटर को कम करें। –