PHP और C # में कॉन्स्टेंट को इनिशियलाइज़ किया जा सकता है क्योंकि उन्हें घोषित किया गया है:
class Calendar3
{
const int value1 = 12;
const double value2 = 0.001;
}
मेरे पास एक फंक्टर की निम्नलिखित सी ++ घोषणा है जो दो गणित वैक्टर की तुलना करने के लिए एक अन्य वर्ग के साथ प्रयोग किया जाता है:
struct equal_vec
{
bool operator() (const Vector3D& a, const Vector3D& b) const
{
Vector3D dist = b - a;
return ( dist.length2() <= tolerance );
}
static const float tolerance = 0.001;
};
यह कोड जी ++ की समस्याओं के बिना संकलित है। अब C ++ 0x मोड में (-std = c ++ 0x) g ++ कंपाइलर एक त्रुटि संदेश आउटपुट करता है:
त्रुटि: गैर-अभिन्न प्रकार के स्थैतिक डेटा सदस्य 'सहिष्णुता' के इन-क्लास इनिशियलाइज़ेशन के लिए 'कॉन्स्टैक्सप्र' की आवश्यकता
मुझे पता है कि मैं इसे परिभाषित और आरंभ कर सकता हूं static const
सदस्य को वर्ग परिभाषा के बाहर । इसके अलावा, एक गैर-स्थिर स्थिर डेटा सदस्य को एक निर्माणकर्ता की प्रारंभिक सूची में आरंभीकृत किया जा सकता है।
लेकिन क्या वर्ग घोषणा के भीतर एक निरंतर को शुरू करने का कोई तरीका है जैसे कि PHP या C # में संभव है?
अपडेट करें
मैंने static
कीवर्ड का उपयोग सिर्फ इसलिए किया क्योंकि जी + ++ में कक्षा की घोषणा के भीतर ऐसे स्थिरांक को शुरू करना संभव था। मुझे सिर्फ एक वर्ग घोषणा में एक निरंतरता को शुरू करने का एक तरीका चाहिए, चाहे वह घोषित हो static
या न हो।
I used static keyword just because it was possible to initialize such constants within the class declaration in g++. I just need a way to initialize a constant in a class declaration no matter if it declared as static or not.
यह तय करने का गलत तरीका है कि सदस्य होना चाहिएstatic
या नहीं। कभी भी शाब्दिक आलस्य को अपने कोड के शब्दार्थ को तय न करने दें।