2010-06-11 2 views
7

में स्थिर संरचना मैं एक संरचना को परिभाषित करना चाहता हूं, जहां कुछ गणित स्थिरांक संग्रहीत किए जाएंगे।
यहाँ मैं अब मिल गया है:सी ++

struct consts { 
    //salt density kg/m3 
    static const double gamma; 
}; 

const double consts::gamma = 2350; 

यह ठीक काम करता है, लेकिन वहाँ 10 से अधिक चल बिन्दु स्थिरांक होगा, तो मैं उनमें से प्रत्येक से पहले 'स्थिर स्थिरांक' लिखा नहीं चाहता है। और ऐसा ही कुछ को परिभाषित:

static const struct consts { 
    //salt density kg/m3 
    double gamma; 
}; 

const double consts::gamma = 2350; 

यह ठीक लग, लेकिन मैं इन त्रुटियों को मिल गया:
1. सदस्य समारोह
2. अनुमति नहीं पुन: घोषणा एक nonstatic डेटा सदस्य अपने वर्ग के बाहर परिभाषित नहीं किया जा सकता है

मुझे आश्चर्य है कि क्या ऐसा करने के लिए कोई सी ++ तरीका है?

+0

10 बहुत कुछ नहीं है। बस 'स्थिर कॉन्स डबल' भाग कॉपी करें। –

+1

मुझे विश्वास है कि कोड में कॉपी-पेस्ट एक सबसे बड़ी बुराई है :) – Andrew

+3

__logic__ की कॉपी-पेस्ट एक बड़ी बुराई है। स्थैतिक कॉन्स डबल की कॉपी-पेस्ट ... बहुत ज्यादा नहीं। यदि आपको 10 कॉन्स की आवश्यकता है, तो आपको उन्हें घोषित करने की आवश्यकता है। – jmucchiello

उत्तर

27

किसी नामस्थान में संरचना बनाने की बजाय नामस्थान का उपयोग करें।

namespace consts{ 
    const double gamma = 2350; 
} 

डेटा तक पहुंचने की विधि में भी वही synatx है। उदाहरण के लिए:

double delta = 3 * consts::gamma; 
+0

क्षमा करें, मैंने आपके परिवर्तन पर मुद्रित किया है :( –

+0

@ डेविड कोई समस्या नहीं, संपादन के लिए धन्यवाद। मैं लगभग इस तथ्य को याद करता हूं कि मैं वहां एक प्रकार डालना भूल गया था। – Yacoby

+0

धन्यवाद, वही है जो मैं चाहता हूं :) – Andrew

10

यह आप की तरह लगता है वास्तव में सिर्फ एक नाम स्थान हैं:

namespace consts { 
    const double gamma = 2350.0; 
    // ... 
} 

सिवाय मैं इसके लिए consts तुलना में एक बेहतर नाम के साथ आने की कोशिश करते हैं चाहते हैं।

+0

संपादन के बारे में खेद है, मैंने गलत बटन पर क्लिक किया। –