What can I "forward declare" in C++? -


मुझे पता है मैं कर सकता हूँ

  class Foo;  

और शायद

<पूर्व> स्ट्रेट बार;

और वैश्विक कार्य

  bool isvalid (int iVal);  

टाइप टाइप एन्यूम के बारे में क्या है? एक अघोषित वर्ग के भीतर टाइप एनाम के बारे में क्या? एक अघोषित वर्ग के साथ एक समारोह के बारे में क्या? एक अघोषित वर्ग के भीतर एक स्थिर सदस्य के बारे में क्या? इनके बारे में एक अज्ञात नाम स्थान के भीतर क्या है? क्या मैं और कुछ भी लापता हूं जो आगे की घोषणा की जा सकती है?

आप घोषित कर सकते हैं

  • आंशिक विशेषज्ञताओं सहित टेम्पलेट,
  • विशिष्ट विशेषज्ञता
  • नेस्टेड कक्षाएं (इसमें स्ट्रैक्ट्स, "वास्तविक" वर्ग और यूनियन शामिल हैं)
  • गैर-नेस्टेड और
  • फ़ंक्शंस

यदि "आगे की घोषणा" से आप सख्ती से "घोषित करते हैं लेकिन नहीं" परिभाषित "आप आगे सदस्य कार्य घोषित कर सकते हैं लेकिन उन्हें घोषित किए जाने के बाद आप उन्हें अपनी कक्षा की परिभाषा में दोबारा नहीं कर सकते। आप एन्यूमरेशन अग्रेषित नहीं कर सकते मुझे यकीन नहीं है कि मुझे कुछ याद आ गया है या नहीं

कृपया ध्यान दें कि ऊपर सूचीबद्ध सभी आगे की घोषणाएं, आंशिक और स्पष्ट विशेषज्ञताओं को छोड़कर, एक अयोग्य नाम का उपयोग करके घोषित किए जाने की आवश्यकता है और उस सदस्य कार्य और नेस्टेड कक्षाओं को केवल उनके वर्ग में घोषित किया जा सकता है-लेकिन-परिभाषित नहीं किया जा सकता परिभाषा।

  वर्ग ए {}; कक्षा ए :: बी; // नहीं कानूनी नाम स्थान ए {} शून्य ए :: एफ (); // नहीं कानूनी नाम स्थान ए {शून्य f (); } // कानूनी वर्ग बी {वर्ग सी; }; // कानूनी वर्ग बी :: सी; // घोषणा- केवल कानूनी वर्ग D {template & lt; typename T & gt; कक्षा ई; }; टेम्पलेट & lt; typename T & gt; वर्ग डी :: ई & lt; T * & gt ;; // कानूनी (सीएफ 14.5.4 / 6)  

Comments