2010-07-19 22 views
13

में आगे की घोषणा कक्षाएं मैं नहीं बल्कि जानने के लिए कि मैं आगे गुंजाइश संकल्प ऑपरेटर का उपयोग एक और दायरे से एक वर्ग की घोषणा नहीं कर सकता हैरान था, यानीनामस्थान

class someScope::someClass; 

इसके बजाय, पूर्ण घोषणा के रूप में इस्तेमाल किया जाएगा निम्नानुसार है:

namespace 
{ 
    class someClass; 
} 

कोई बता सकता है कि ऐसा क्यों है?

अद्यतन: स्पष्ट करने के लिए, मैं पूछ रहा हूँ क्यों यह मामला है।

+0

डुप्लिकेट: http://stackoverflow.com/questions/1368642/is-there-a-shorter-way-to-forward-declare-a-class-in-a-namespace तकनीकी प्रश्न, उस प्रश्न से : http://stackoverflow.com/questions/1368642/is-there-a-shorter-way-to-forward-declare-a-class-in-a-namespace/1368738#1368738 – GManNickG

उत्तर

6

लगता है इस सवाल का जवाब है जैसे कि सी ++ विनिर्देश में निहित है:

3.3.5 "नाम स्थान गुंजाइश" मानक में।

संस्थाओं एक namespace शरीर में घोषित नाम स्थान के सदस्यों होने के लिए कहा जाता है, और द्वारा शुरू की नाम नाम स्थान की कथात्मक क्षेत्र में इन घोषणाओं नाम स्थान के सदस्य के नाम होने के लिए कहा जाता है।

एक नाम स्थान सदस्य भी :: गुंजाइश संकल्प ऑपरेटर (5.1) अपने नाम स्थान का नाम या नाम एक नाम स्थान है जो एक using- में सदस्य के नाम स्थान का नामांकन की करने के लिए लागू करने के बाद करने के लिए भेजा जा सकता है निर्देश;

1

मुझे यकीन है कि क्यों नहीं कर रहा हूँ। शायद क्योंकि, आपके पहले कोड स्निपेट में, someScope अव्यवस्थित है। यह एक नामस्थान, या एक वर्ग का नाम हो सकता है। अगर कुछ स्कोप एक वर्ग का नाम है, तो आप स्वतंत्र रूप से किसी अन्य वर्ग के वर्ग सदस्य घोषित नहीं कर सकते हैं।

8

आप अपने नामस्थान के बाहर एक कक्षा घोषित नहीं कर सकते हैं, क्योंकि संकलक के प्रकार से अवगत नहीं हो सकता है कुछ स्कोप

नाम स्थान {} नाम स्थान के अस्तित्व की घोषणा करने के लिए आवश्यक है, और फिर, घोषित वर्ग SomeClass अपने दायरे में।

+0

आप हालांकि मेरे सवाल का जवाब नहीं कर रहे हैं , मैं पूछ रहा हूं कि ऐसा क्यों नहीं है कि इसके आसपास कैसे जाना है - मुझे पहले से ही यह पता है। :-) – Konrad

+1

IMHO, इस निर्णय SomeClass :: someMember और someNamespace :: SomeClass के बीच एक अंतर बनाने के लिए चुना गया था। अन्यथा इसे कैसे संभाल सकता है? – Doomsday

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