不知道在哪裏問(如果這是一個不適當的問題,可以隨意關閉它),但是我沒有在C++ 17的提案中找到任何具體的內容,this或this在處理嵌套名稱空間時都沒有提到C++。C++ 17會允許嵌套類的前向聲明嗎?
所以目前這是唯一的選擇:
class A
{
public:
class B; //forward-declared INSIDE class/namespace
};
class A::B //defined outside
{
};
這將有可能在C + + 17?
class A::B; //forward declared NESTED outside of parent class/namespace
class C
{
A::B *b;
};
,然後或者這(1)(作爲似乎是嵌套namepsace定義的提議)
class A::B //definition of A::B without defining A
{
};
或該(2)
class A
{
public:
class A::B
{
};
};
或該[3]
class A
{
public:
class B;
};
class A::B
{
};
我懷疑定義o如果沒有定義A
,那麼第一個可能無法工作(雖然該提案似乎允許)。
* class * es與* namespace * s大不相同。但請參閱[P0289](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0289r0.pdf)。 – cpplearner