Tuesday 15 June 2010

c++ - reference to a variable inside a class -


असल में मैं एक स्थिरांक चाहता हूं - नहीं const संदर्भ - - श्रेणी के भीतर एक चर के संदर्भ में

  वर्ग फ़ू {सार्वजनिक: डबल एक्स, वाई, जेड; डबल & amp; A = x; डबल & amp; बी = वाई; डबल & amp; C = z; }   

यदि मैं x = 3 को a होना चाहता / चाहती हो तो 3 भी हो मैं एक्स के लिए एक संदर्भ होना चाहता हूं, जैसे कि double * a = & amp; x;
जैसे एक संकेतक के साथ आसान होगा, लेकिन मैं इसे हर समय dereference नहीं करना चाहता ..

अगर मैं इसे संकलित करता हूं तो मुझे यह संदेश मिलता है:

  चेतावनी: गैर-स्टैटिक डेटा सदस्य प्रारंभिक केवल -std = c ++ 11 या -std = gnu ++ 11 [ डिफ़ॉल्ट रूप से सक्षम] चेतावनी: गैर-स्टैटिक डेटा सदस्य प्रारंभिक केवल -std = c ++ 11 या -std = gnu ++ 11 [डिफ़ॉल्ट रूप से सक्षम] के साथ उपलब्ध है: गैर-स्टैटिक डेटा सदस्य प्रारंभिक केवल -std = c के साथ उपलब्ध है ++ 11 या -std = gnu ++ 11 [डिफ़ॉल्ट रूप से सक्षम]   

लेकिन मुख्य समस्या नहीं है: अगर मैं उनको उपयोग करने की कोशिश करता हूं ( a, b, c ) यहाँ की तरह:

  फु फू; Foo.x = 1.0; Foo.y = 0.5; Foo.z = 5.1; Printf ("a: & lt;% f & gt; बी: & lt;% f & gt; c: & lt;% f & gt; \ n", foo.a, foo.b, foo.c);   

मुझे यह संकलक संदेश मिलता है:

  foo.h: 5 त्रुटि: गैर-स्थिर संदर्भ सदस्य 'डबल & amp; फू :: ए ', डिफ़ॉल्ट असाइनमेंट ऑपरेटर का उपयोग नहीं कर सकता foo.h: 6 त्रुटि: गैर-स्थिर संदर्भ सदस्य' डबल & amp; फू :: बी ', डिफ़ॉल्ट असाइनमेंट ऑपरेटर का उपयोग नहीं कर सकता foo.h: 7 त्रुटि: गैर-स्थिर संदर्भ सदस्य' डबल & amp; फू :: सी ', डिफ़ॉल्ट असाइनमेंट ऑपरेटर का उपयोग नहीं कर सकता   

foo.h: 5 डबल और amp; A = x;
foo.h: 6 डबल और amp; बी = y;
foo.h: 7 है डबल & amp; C = z;

तो क्या मेरी गलती है?

आप असाइनमेंट के माध्यम से संदर्भ प्रारंभ नहीं कर सकते। उन्हें कंस्ट्रक्टर की प्रारंभिक सूची में आरंभ करने की आवश्यकता है, जैसे:

  वर्ग फ़ू {सार्वजनिक: डबल एक्स, वाई, जेड; डबल & amp; ए; डबल & amp; ख; डबल & amp; सी; फू (): ए (एक्स), बी (वाई), सी (जेड) {} // आपको एक असाइनमेंट ऑपरेटर और एक कॉपी कन्स्ट्रक्टर की आवश्यकता है, फ़ू (कॉन्स्ट फू एंड आरए): ए (एक्स), बी (वाई) , सी (जेड), एक्स (आरएमएस।), वाई (आर.एस.एस.), जेड (आर.एस.एस.) {} फू एंड amp; ऑपरेटर = (कॉन्स्ट फू एंड आरए) {x = rhs.x; y = rhs.y; z = rhs.z; वापसी * ​​यह; }};    

No comments:

Post a Comment