यह सुनिश्चित नहीं है कि कहां से पूछना है (अगर यह अनुचित प्रश्न है तो इसे बंद करने के लिए स्वतंत्र महसूस करें) लेकिन मुझे विशेष रूप से सी ++ 17 प्रस्तावों में कुछ भी नहीं मिला है, न तो this या this नेस्टेड नेमस्पेस अतिरिक्त से निपटने के दौरान इसका उल्लेख किया है सी ++।क्या सी ++ 17 नेस्टेड कक्षाओं की घोषणा की अनुमति होगी?
class A
{
public:
class B; //forward-declared INSIDE class/namespace
};
class A::B //defined outside
{
};
इस सी ++ 17 में संभव हो जाएगा:
तो वर्तमान में इस एकमात्र विकल्प है?
class A::B; //forward declared NESTED outside of parent class/namespace
class C
{
A::B *b;
};
और फिर या तो इस (1)
class A::B //definition of A::B without defining A
{
};
या इस (2)
class A
{
public:
class A::B
{
};
};
या (नेस्टेड namepsace परिभाषाओं के प्रस्ताव को हो रहा है के रूप में) इस [3]
class A
{
public:
class B;
};
class A::B
{
};
मुझे परिभाषा पर संदेह है एफ A::B
A
को परिभाषित किए बिना पहले काम नहीं कर सकता है (हालांकि प्रस्ताव इसे अनुमति देता है)।
* कक्षा * es * नेमस्पेस * से बहुत अलग हैं। लेकिन देखें [पी 028 9] (http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0289r0.pdf)। – cpplearner