मैं किसी फ़ंक्शन के संदर्भ में एक पॉइंटर पास करना चाहता हूं, जैसे कि मैं वास्तव में पारित सूचक को इंगित कर सकता हूं और मैं इस तर्क को डिफ़ॉल्ट रूप से असाइन करना चाहता हूं मूल्य।सी ++ संदर्भ द्वारा पॉइंटर पास करें और डिफ़ॉल्ट मान असाइन करें
कुछ इस तरह:
घोषणाvoid myFunc(SomeType* &var=NULL);
और परिभाषा
: एक कॉल प्राप्त करने वाला फैसला कर सकते हैं
void MyClass::myFunc(SomeType* &var){
if(var!=NULL)
(*var)=(*someOtherPointer);
if(someCondition)
var=NULL;
}
ऐसी है कि क्या वह एक तर्क के साथ समारोह कॉल करने के लिए करना चाहता है या तर्क के बिना। और sucht है कि अगर वह एक तर्क पारित करने के लिए फैसला करता है, और someCondition रखती है, पारित कर दिया सूचक हालांकि बाद में शून्य पर
इंगित करेगा - अगर मैं इस तरह करने की कोशिश मैं प्राप्त एक:
त्रुटि C2440: 'डिफ़ॉल्ट तर्क ':' int 'को' कुछ टाइप * & '
सहायता के लिए धन्यवाद नहीं दिया जा सकता है!
जब तक "कुछ शर्त" में "var! = NULL" शामिल नहीं है, तो आपने अभी एक उत्तर स्वीकार कर लिया है जो एक पूर्ण सूचक का संदर्भ देता है। शायद आप जो चाहते थे वह नहीं। – imaginaryboy
इसके अलावा, ध्यान रखें कि (** var) = (* someOtherPointer) का उपयोग वास्तव में एक ऑब्जेक्ट प्रतिलिपि करेगा। यदि आप केवल पॉइंटर प्रतिलिपि करना चाहते हैं, तो आप शायद (* var) = (someOtherPointer) चाहते हैं।उदाहरण के लिए – Thought