// The stuff you want to use.
namespace foo { namespace bar {
class Frob {};
} }
अब: मानक कुछ कम अच्छा विकल्प प्रदान करता है।
typedef
अपने वर्ग परिभाषा के private
खंड में है कि उर्फ लिखने के लिए संभव बनाता है:
// I)
class Schwarzschild {
typedef foo::bar::Frob FbFrob;
public: Schwarzschild() : a(FbFrob()), b(FbFrob()) {}
private: FbFrob a,b,c;
};
लेकिन क्या आप भी यह यूनिट दुनिया भर में उपयोग कर सकते हैं, लेकिन एक अवसर के साथ यह नाम बदलने के लिए:
// II)
class Schwarzschild {
public: Schwarzschild();
private: foo::bar::Frob a,b,c;
};
// cxx-file
typedef foo::bar::Frob FbFrob;
Scharzschild::Scharzschild() : a(FbFrob()) {}
भी कर सकते हैं उर्फ नामस्थान:
// III)
namespace fb = foo::bar;
class Planck {
public: Planck() : a(fb::Frob()), b(fb::Frob()) {}
private: fb::Frob a,b,c;
};
या आप चेरी प्रतीकों अन्य नामस्थान से, चुन सकते हैं नुकसान यह है कि आपके Frob
अनुवाद की अपनी यूनिट में एक और Frob
के साथ भिड़ना सकता है के साथ:
// IV)
using foo::bar::Frob;
class Mach {
public: Mach() : a(Frob()), b(Frob()) {}
private: Frob a,b,c;
};
बस पूर्णता के लिए के लिए, सबसे प्रदूषण समाधान using namespace
है।
// V)
using namespace foo::bar;
class Newton {
public: Newton() : a(Frob()), b(Frob()) {}
private: Frob a,b,c;
};
ध्यान दें कि तृतीय, चतुर्थ और पंचम भी अपने CXX-फाइल करने के लिए, स्च्वार्ज़स्चिल्ड-उदाहरण में सीमित किया जा सकता है।
यह कौन सी भाषा है? कृपया उचित टैग करें। –
क्षमा करें Tomasz, और टिप्पणी के लिए धन्यवाद। सी ++ टैग जोड़ने के लिए संपादित किया गया। – Ant
भ्रम से बचने के लिए इसे "सीटीओ-प्रारंभकर्ता" कहा जाना चाहिए क्योंकि सी ++ व्याकरण तत्व "प्रारंभकर्ता-सूची" कुछ और है (कुल प्रारंभकर्ताओं के लिए '{}' के बीच का हिस्सा)। और शेष फ़ाइल को "प्रदूषण" में उपयोग करने के साथ इतना बुरा क्या है? यह आपकी .cxx फ़ाइल है, हेडर नहीं, इसलिए यह ठीक होना चाहिए। एक और विकल्प 'nsConstants :: ONE;' का उपयोग करना होगा, लेकिन आप जो चाहते हैं वह संभव नहीं है। – PlasmaHH