मैं समझने की कोशिश कर रहा हूं कि boost
के साथ आने वाली कुछ संरचनाओं का उपयोग करने का सही समय कब है और संदर्भ के साथ boost::optional
के उपयोग के बारे में कोई प्रश्न था।बढ़ावा :: वैकल्पिक <T&> बनाम टी *
मान लीजिए मैं निम्नलिखित वर्ग है, boost::optional
का उपयोग कर: क्यों मैं ऊपर का प्रयोग करेंगे बजाय
class MyClass {
public:
MyClass() {}
initialise(Helper& helper) {
this->helper = helper;
}
boost::optional<Helper&> getHelper() {
return helper;
}
private:
boost::optional<Helper&> helper;
}
:
class MyClass {
public:
MyClass() : helper(nullptr) {}
initialise(Helper& helper) {
this->helper = &helper;
}
Helper* getHelper() {
return helper;
}
private:
Helper* helper;
}
वे दोनों एक ही मंशा व्यक्त, यानी कि getHelper
null
लौट सकते हैं , और कॉलर को अभी भी परीक्षण करने की आवश्यकता है कि एक सहायक वापस लौटाया गया हो।
क्या आपको केवल boost::optional
का उपयोग करना चाहिए यदि आपको 'एक मान', nullptr
और 'मूल्य नहीं' के बीच का अंतर जानने की आवश्यकता है?
बढ़ावा :: वैकल्पिक सिर्फ टी के आवरण *। को बढ़ावा देने से टी * पसंद करते हैं :: वैकल्पिक वजह से बढ़ावा देने के लिए :: वैकल्पिक C++ अजीब है। टी * में बेहतर पठनीयता –
jean