2012-11-30 11 views
7

संभव डुप्लिकेट:
initialize a const array in a class initializer in C++स्थिरांक सरणी वर्ग के सदस्य प्रारंभ

यह एक नौसिखिया सवाल है। निरंतर पूर्णांक सरणी वर्ग सदस्य कैसे init? मुझे लगता है कि उसी मामले में क्लासिक सरणी सबसे अच्छा विकल्प नहीं है, इसके बजाय मुझे इसका क्या उपयोग करना चाहिए?

class GameInstance{ 
    enum Signs{ 
     NUM_SIGNS = 3; 
    }; 
    const int gameRulesTable[NUM_SIGNS][NUM_SIGNS]; // how to init it? 
public: 
    explicit GameInstance():gameRulesTable(){}; 
}; 
+0

आपकी टिप्पणी के लिए धन्यवाद, मैंने यह प्रश्न देखा, लेकिन 2008 में उन प्रश्नों का उत्तर दिया गया था, और संभावित नई स्टैंडआर्ट सुविधाओं के बारे में कुछ चर्चा हुई थी, जिसे बाद में 2011 में स्वीकार किया गया था। – vard

+3

उस प्रश्न में सी ++ 11 का उत्तर है । –

+0

क्षमा करें, मैं नहीं मिल सकता है (( – vard

उत्तर

5

इसे स्थिर बनाएं?

class GameInstance{ 
    enum Signs{ 
     NUM_SIGNS = 3}; 
    static const int gameRulesTable[2][2]; 
public: 
    explicit GameInstance(){}; 
}; 

...in your cpp file you would add: 
const int GameInstance::gameRulesTable[2][2] = {{1,2},{3,4}}; 
+0

दुर्भाग्य से मेरी संकलक इस अनुमति नहीं है। उन्होंने कहा कि है कि वहाँ कई सरणी घोषणा। – vard

+2

@vard 'स्थिरांक पूर्णांक GameInstance :: gameRulesTable [2 ] [2] = {{1,2}, {3,4}}; '- यह एक .cpp फ़ाइल में होना चाहिए। – Stals

6

सी ++ 11 में, आप एक प्रारंभ सूची में स्थिरांक सरणी सदस्य को प्रारंभ कर सकता है

class Widget { 
public: 
    Widget(): data {1, 2, 3, 4, 5} {} 
private: 
    const int data[5]; 
}; 

या

class Widget { 
    public: 
     Widget(): data ({1, 2, 3, 4, 5}) {} 
    private: 
     const int data[5]; 
    }; 

उपयोगी लिंक: http://www.informit.com/articles/article.aspx?p=1852519

http://allanmcrae.com/2012/06/c11-part-5-initialization/

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

  • कोई संबंधित समस्या नहीं^_^