आप घोषणा आंशिक विशेषज्ञताओं सहित
- टेम्पलेट, अग्रेषित कर सकते हैं
- स्पष्ट विशेषज्ञताओं
- नेस्टेड कक्षाएं
- गैर नेस्टेड और स्थानीय वर्गों (इस structs, "असली" वर्गों और यूनियनों भी शामिल है)
- चर ("बाहरी int a;")
- कार्य
यदि "आगे की घोषणा" से आप सख्ती से "घोषित करें लेकिन परिभाषित नहीं करते हैं" तो आप सदस्य कार्यों की घोषणा भी कर सकते हैं। लेकिन जब आप घोषित हो जाते हैं तो आप उन्हें अपनी कक्षा परिभाषा में दोबारा नहीं बदल सकते हैं। आप गणना नहीं कर सकते हैं-गणनाएं घोषित करें। मुझे यकीन नहीं है कि मुझे कुछ याद आया है या नहीं।
कृपया ध्यान दें कि आंशिक और स्पष्ट विशेषज्ञता को छोड़कर ऊपर सूचीबद्ध सभी आगे की घोषणाओं को एक अयोग्य नाम का उपयोग करके घोषित करने की आवश्यकता है और सदस्य कार्य और घोंसला वाले वर्गों को केवल उनकी कक्षा परिभाषा में घोषित किया जा सकता है।
class A { };
class A::B; // not legal
namespace A { }
void A::f(); // not legal
namespace A { void f(); } // legal
class B { class C; }; // legal
class B::C; // declaration-only not legal
class D { template<typename T> class E; };
template<typename T> class D::E<T*>; // legal (c.f. 14.5.4/6)
स्रोत
2010-09-26 21:17:17
आप इसे क्यों नहीं देखते और देखते हैं? –
enum सी ++ 0x में घोषित करने में सक्षम होने जा रहा है। और आप "आंशिक रूप से" कक्षाओं (विधियों की आगे की घोषणा) घोषित नहीं कर सकते हैं – erjot
मैं उन वर्गों के भीतर टाइप किए गए enums डालता हूं जो उन्हें "परिभाषित" करते हैं। मैं फिर दो वर्गों के साथ "परिपत्र निर्भरता" संकलक मुद्दों में भाग लेता हूं जो एक-दूसरे के enums का संदर्भ देते हैं। – franji1