c++ - error within this context tags may tag wrong location -


Win7 64-bits

साइगविन जी ++ 4.8.3 (-std = gnu + 11)

मुझे थोड़ी सी समस्या के साथ एक छोटा कोड मिल गया है

<पूर्व> कक्षा InputClass {निजी: वेक्टर & lt; स्ट्रिंग & gt; & amp; str; इस्ट्रीम इन; // कोई कोड नहीं, कोई त्रुटि सार्वजनिक नहीं: InputClass (वेक्टर & lt; स्ट्रिंग & gt; str): str (str) {}}; // class InputClass

क्यों "istream in;" एक त्रुटि उत्पन्न करते हैं और गलत क्यों कहा गया है "str (str)" जब "इस्ट्रीम इन;" हटा दिया गया है, कोई त्रुटि नहीं है

पूर्ण त्रुटि संदेश एट अल:

  जी + + -वॉल-वाययूयूज-चर -स्टडी = जीएनयू ++ 11-सी -जी-एमएमडी -एमपी -एमएफ "बिल्ड / डीबग / साइगविन 64 / विंडोज / मेन.ोड "-ओ बिल्ड / डीबग / साइगविन 64-विंडोज / मुख्य.ओ मुख्य सीपीपी / / / ur / gcc/x86_64-pc-cygwin/4.8.3/include/c++ में शामिल फ़ाइल में / Iostream: 40: 0, मुख्य सीपीपी से: 9: /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/istream: निर्माता में 'InputClass :: InputClass (std :: vector & lt; Std :: basic_string & lt; char & gt; & gt;) ': /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/istream:606:7: त्रुटि:' std :: basic_istream & lt; _CharT, _Traits & gt; ; :: basic_istream () [_CharT = char; _Traits = std :: char_traits & lt; char & gt;] मूलभूत_स्ट्रीम () ^ main.cpp: 44: 44: त्रुटि: इस संदर्भ के भीतर InputClass (वेक्टर & lt; स्ट्रिंग & gt; str): str (str) {} ^  

त्रुटि यह है कि isstream डिफ़ॉल्ट रचनात्मक नहीं है, लेकिन आप कोशिश कर रहे हैं डिफ़ॉल्ट बनाने के लिए यह। संभवतः एक संरक्षित डिफ़ॉल्ट कन्स्ट्रक्टर मौजूद है - शायद कुछ अन्य वर्गों के लिए - लेकिन आपको इसका उपयोग करने की अनुमति नहीं है। केवल आपको उपयोग करने की अनुमति दी गई है:

  स्पष्ट इस्ट्रीम (स्ट्रीमबुफ़ *);  

लेकिन इस निर्माता के साथ एक और समस्या है: आप अपने str का निर्माण अस्थायी str के संदर्भ के रूप में कर रहे हैं InputClass स्वीकार करता है इसलिए कन्स्ट्रक्टर पूर्ण होने के बाद, आप एक लंपट संदर्भ के साथ छोड़े गए हैं।


Comments