2012-06-12 20 views
6

बनाने के लिए मैं कैसे निम्न पंक्ति की कोशिश की:
static const const char* values[];
लेकिन मैं कुलपति ++ चेतावनी C4114 पर निम्न चेतावनी मिलती है: एक ही प्रकार के क्वालीफायर एक बार से अधिक प्रयोग किया जाता है।
सही घोषणा क्या है?

संपादित करें: बाईं के अंतर्गत आता है:
लक्ष्य ग तार के अपरिवर्तनीय सरणीस्थिरांक चार की एक स्थिर स्थिरांक सरणी *

+0

क्या आप बनाना चाहते हैं? निरंतर वर्णों के निरंतर पॉइंटर्स की एक सरणी? –

उत्तर

13

आपने const const लिखा है static const char* const values[];

इसके अलावा (जहां सूचक और const के रूप में अंतर्निहित मान निर्धारित) के बजाय, आप इसे प्रारंभ करने की आवश्यकता:

static const char* const values[] = {"string one", "string two"};

+0

+1 जैसा ही है, लेकिन प्रारंभिकरण संदर्भ पर निर्भर करता है, यदि यह कक्षा (मेरा अनुमान) का' स्थैतिक 'सदस्य है तो कोई प्रारंभिकरण नहीं है घोषणा में किया जा सकता है ... –

+0

क्या मैं सही ढंग से समझता हूं, पहला कॉन्स स्ट्रिंग के लिए है और दूसरा सरणी के लिए है? – Tommy

+7

कीवर्ड 'const' को स्पष्ट करने के लिए: A 'const' हमेशा उस" आइटम "से संबंधित है। इसका अपवाद है, जब अभिव्यक्ति में पहला शब्द कॉन्स्टेंस होता है, तो यह उस आइटम से संबंधित है। तो सुपर-सही होने के लिए, कोई स्ट्रिंग को 'स्थैतिक char const * const मान []' के रूप में परिभाषित करेगा, जिसे बाएं से दाएं पढ़ा जा सकता है: मान कॉन्स्ट पॉइंटर्स का एक सरणी है जो कि कानों को स्थिर करता है और यह सब स्थिर है। – AquilaRapax

4

static const char* const values[]; 

विचार * के दोनों तरफ दो const रों डाल करने के लिए है की कोशिश करो बनाने के लिए है char (निरंतर चरित्र), दाएं char* (स्थिर सूचक-से-चरित्र)

+2

एक तरफ के रूप में यह 'स्थैतिक चार const * const मानों [] ' – Dennis

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