2012-06-04 17 views
5

मैं अपने कन्स्ट्रक्टर की इंटिलाइजेशन सूची में एक सरणी शुरू करने की कोशिश कर रहा हूं, और मैं चाहता हूं कि सरणी आकार MAX_SIZE हो, जो मेरी स्टैक क्लास में सार्वजनिक स्थिरांक है। मैं किस तरह इसे काम पर लगा सकता हूँ? संकलक की शिकायत करते हुए कहा कि वे असंगत प्रकार के लिए 'डबल' डबल [0u] 'कन्स्ट्रक्टर की प्रारंभिक सूची में सरणी आरंभ करें

यहाँ मेरी कोड है काम में:

class Stack { 
    public:  
      Stack(); 
      static const unsigned MAX_SIZE; 
    private: 
      double array[]; 
      unsigned elements;  
    }; // class Stack 

    Stack::Stack(): array(array[MAX_SIZE]), elements(0) {} 

    const unsigned Stack::MAX_SIZE = 4; 

आपकी मदद के लिए अग्रिम धन्यवाद।

+2

जब तक कि आप पूरी तरह से मस्तिष्कवादी नहीं होते: 'स्थिर कॉन्स अप्रमाणित max_size = 4; std :: वेक्टर सरणी; स्टैक :: स्टैक(): सरणी (MAX_SIZE) {} ' –

+1

क्या शायद कोई आसान तरीका है? यानी वेक्टरों का उपयोग किए बिना। मैं प्रोग्राम को अपने सरणी डेटा सदस्य को MAX_SIZE होने के आकार के साथ स्वीकार करने के लिए कैसे प्राप्त कर सकता हूं? – Sean

+0

मैं 'std :: vector' का उपयोग करने के लिए उपयोग किया जाएगा। मैं शायद ही कभी सरणी का उपयोग करता हूं; मैं लगभग हर बार 'std :: vector' वरीयता का उपयोग करूंगा। कोड @ जेसे गुड को भी काम करना चाहिए। –

उत्तर

5
class Stack { 
     public: 
       Stack(); 
       static const unsigned MAX_SIZE = 4; 
     private: 
       double array[MAX_SIZE]; 
       unsigned elements; 
     }; // class Stack 

Stack::Stack(): array(), elements(0) {} 

लेकिन, std::vector टिप्पणियों में उल्लिखित बेहतर होगा।

+0

मैं देखता हूं .. इसलिए, मूल रूप से, प्रारंभिक सूची में सरणी को प्रारंभ करने से बचें। संभव नहीं है, सही? साथ ही, मेरे द्वारा किए गए तरीके के बाद मेरे MAX_SIZE निरंतर लिखना संभव नहीं है? – Sean

+1

कारण मैं पूछता हूं कि मैं यहां पर अलग-अलग पढ़ता हूं, कि परिभाषा कक्षा के बाहर होनी चाहिए: http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom .ibm.xlcpp8a.doc% 2 भाषा% 2Fref% 2Fcplr038.htm – Sean

+0

'array()' intializer सूची शून्य में सभी तत्वों को प्रारंभ करता है। आप सही हैं, और मैंने 'MAX_SIZE' को परिभाषित नहीं किया क्योंकि मैं केवल कोड में इसका मान उपयोग कर रहा हूं। कक्षा के बाहर 'MAX_SIZE' को परिभाषित करें यदि आपको इसे कहीं और उपयोग करने की आवश्यकता है। –

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