मैं इसस्थिर स्थिरांक + स्थिरांक के रूप में सरणी बाध्य
Class.hpp की तरह कुछ कर रहा हूँ का उपयोग करना:
class Class {
private:
static const unsigned int arraySize;
int ar[arraySize+2];
};
Class.cpp:
#include <Class.hpp>
const unsigned int arraySize = 384;
संकलक (क्यू ++, एक जी ++ के आधार पर क्यूएनएक्स ओएस के लिए सी ++ कंपाइलर) error: array bound is not an integer constant
देता है जबकि Class.hpp
(कक्षा.cpp संकलित करते समय) सहित एक इकाई को संकलित करते समय मुझे error: array bound is not an integer constant
देता है।
यह क्यों काम नहीं कर रहा है? मुझे पता है कि एक स्थिर कॉन्स सदस्य को सी ++ मानक द्वारा गारंटीकृत सरणी के रूप में उपयोग किया जा सकता है (this anwser देखें)। लेकिन संकलक static const + const
के परिणाम को निरंतर क्यों नहीं देखता है?
मेरे लिए ठीक है (जीसीसी 4.6.1), जैसा कि इसे करना चाहिए। शायद उस कंपाइलर में एक बग? –
मैंने अपने असली कोड से बेहतर मिलान करने के लिए अपना उदाहरण अपडेट किया। शायद सरणीकरण की अगली घोषणा के साथ कोई समस्या है? – MBober
कृपया यहां देखें: [डीआर # 721] (http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#721)। यह हमेशा इरादा था (और सी ++ में 11 स्पष्ट रूप से मामला है) कि निरंतर के लिए प्रारंभकर्ता उस बिंदु पर दिखाई देना चाहिए जिस पर निरंतर अभिव्यक्ति के रूप में अर्हता प्राप्त करने के लिए स्थैतिक डेटा सदस्य या स्थिर चर का उपयोग किया जाता था। –