2010-02-01 11 views
13

तो, मैं एक वेक्टरमैं तत्काल विंडो में std :: वेक्टर को क्यों सूचीबद्ध नहीं कर सकता?

std::vector<std::string> lines. 

दोनों

lines[0] - error:overloaded operator not found 

और

है मैं इस सदिश को भरने, और

std::string temp = lines[0]; 

की तरह उस तक पहुँच सकते हालांकि, तत्काल विंडो में,

lines.at(0) - error:symbol is ambiguous 

बिल्कुल काम नहीं करते हैं। सी ++ के साथ तत्काल विंडो का उपयोग करने के लिए कोई चाल है। मैं ज्यादातर सी # पृष्ठभूमि से आ रहा हूं, जहां सबकुछ अच्छी तरह से काम करता है (और मेरे पास तत्काल विंडो में इंटेलिजेंस है)। मैं सी ++ महान होने की उम्मीद नहीं कर रहा था, लेकिन मुझे लगा कि यह चींटियों के अलावा चीजों के लिए काम करेगा। क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं? धन्यवाद।

संपादित करें: मैं स्पष्ट किया जाना चाहिए, कुछ भी नहीं वास्तव में तत्काल विंडो में काम करता है, यह सिर्फ एक सरल उदाहरण है

संपादित करें: मैं डिबग मोड में

उत्तर

14

तत्काल हूँ और घड़ी खिड़कियों का समर्थन नहीं करते ओवरलोडेड ऑपरेटर। एक समझदार फैशन में एक पूरे के रूप मानक कंटेनर मुद्रण (देखें, उदाहरण, http://www.virtualdub.org/blog/pivot/entry.php?id=120) के लिए वहाँ में कुछ समर्थन नहीं है, लेकिन यह उन पर operator[] का उपयोग करने में सक्षम होने पर लागू नहीं होती।

उम्मीद है कि यह डीबगर के बाद के संशोधन में सुधार होगा, लेकिन अभी के लिए, वेक्टर के तत्व के तत्व को देखने के लिए, lines._Myfirst[i] आज़माएं।

(_Myfirst, मानक पुस्तकालयों कि कुलपति ++ के साथ आते हैं, एक std::vector कि अनुक्रम के पहले तत्व के लिए अंक में सदस्य चर होता है। तो यह सिर्फ एक वेक्टर परीक्षण कर रहा है जैसे कि यह किसी अन्य वस्तु थे। इसे काम करने के लिए, मुझे हेडर को देखना था ... बहुत सुविधाजनक नहीं, लेकिन उम्मीद है कि यह आपकी मदद करेगा। आप शायद अन्य कंटेनरों के साथ कुछ भी कर सकते हैं, लेकिन आपको हेडर को बाहर काम करने के लिए देखना होगा कैसे।)

(वैसे, यदि आप सी # में काम कर रहे हैं, तो सी ++ डीबगर शायद सामान्य रूप से थोड़ी कम चालाकी की तुलना में प्रतीत होता है, और यह इसका एक उदाहरण है। मुझे इंप्रेशन मिलता है सीएलआर पक्ष में बहुत अधिक काम किया गया है।)

+0

ठीक है, धन्यवाद, खरीद क्यों .at होगा() असफल? – Steve

+0

घड़ी और तत्काल विंडो में कॉल करने वाले सदस्य फ़ंक्शंस को या तो काम नहीं लग रहा है। (मैंने स्लिमनेस की कमी का जिक्र करने के लिए अपना जवाब अपडेट कर लिया है - यह दूसरा उदाहरण है!) हालांकि आप आमतौर पर फ्रीस्टैंडिंग फ़ंक्शंस को कॉल कर सकते हैं। कष्टप्रद, लेकिन आप इसे करने के लिए इस्तेमाल कर सकते हैं पाने के लिए - नहीं है कि आप निश्चित रूप से किसी भी विकल्प नहीं है :) (उम्मीद है कि बाद के संशोधनों देशी डिबगिंग पक्ष में सुधार होगा, यह पहले से ही पूरी तरह से उपयोगी है, लेकिन सिर्फ पॉलिश CLR पक्ष है कि का अभाव है।) –

+0

.at() शायद उसी कारण से विफल रहता है: यह अधिभारित है। – MSalters

-1

आजकल के विजुअल स्टूडियो संस्करणों (उदा। 2013/2015) _ Myfirst सदस्य परिवर्तक अब std :: वेक्टर चर के लिए मौजूद नहीं है। इसके बजाय _C_begin का उपयोग करें - दिए गए उदाहरण के उपयोग के लिए मतलब उदा। lines._C_begin [i]। उस पर मदद के लिए

+1

क्या आप कृपया अपना उत्तर विस्तृत कर सकते हैं या इसे एक उदाहरण के साथ और अधिक पूरा कर सकते हैं? यह प्रश्नकर्ता को आपके मतलब के बारे में एक स्पष्ट विचार प्राप्त करने में मदद कर सकता है। – itsols