2012-10-23 72 views
10

मैं जब निम्नलिखित कोड संकलन की कोशिश की कोई समस्या हुई है नाम नहीं बताती। मैं सी ++ के लिए नया हूं और वास्तव में नहीं जानता कि यहां क्या हो रहा है। क्या कोई यहां हल करने में मेरी सहायता कर सकता है? धन्यवाद!!त्रुटि "xxxx" को एक प्रकार

उत्तर

14

आप वैश्विक क्षेत्र में मनमाने ढंग से भाव पर अमल नहीं किया जा सकता है, तो

mapDial['A'] = 2; 

गैर कानूनी है। यदि आपके पास सी ++ 11, आप

map<char, int> mapDial { 
    { 'A', 2 } 
}; 

कर सकते हैं लेकिन अगर आप नहीं करते हैं, आप main से एक initialisation समारोह कॉल करने के लिए जिस तरह से आप यह चाहते सेट अप करना होगा। आप map के निर्माता भी देख सकते हैं जो एक इटरेटर लेता है, और मानचित्र को आरंभ करने के लिए फ़ंक्शन में किसी सरणी के साथ इसका उपयोग करता है, उदा।

map<char, int> initMap() { 
    static std::pair<char, int> data[] = { 
     std::pair<char, int>('A', 2) 
    }; 

    return map<char, int>(data, data + sizeof(data)/sizeof(*data)); 
} 

map<char, int> mapDial = initMap(); 
+0

आपको बहुत बहुत धन्यवाद! – Lamian

+0

@ user1596792 अगर यह आपके प्रश्न का उत्तर दिया गया है, तो उत्तर के रूप में चिह्नित करने के लिए इसके बगल में स्थित चेक मार्क पर क्लिक करें। –

3

आपके पास वैश्विक दायरे पर mapDial['A'] = 2; जैसे वक्तव्य नहीं हो सकते हैं। वे एक समारोह के अंदर होना चाहिए।

3

जब आप वैश्विक दायरे में एक चर घोषित करते हैं, तो आप केवल प्रारंभिकता ही कर सकते हैं। उदा,

आप की तरह सामान्य बयान नहीं कर सकता:

a = 9; 

तो मैं के साथ कोड को ठीक होगा:

#include <iostream> 
#include <cstdio> 
#include <cstring> 
#include <algorithm> 
#include <map> 

using namespace std; 

map<char, int> mapDial; 

int main() 
{ 
    mapDial['A'] = 2; 
    cout << mapDial['A'] << endl; 
    return 0; 
} 
+0

बहुत बहुत धन्यवाद! – Lamian

संबंधित मुद्दे