不确定在哪里提问(如果这是一个不合适的问题,请随意关闭),但我在C++17提案中没有找到任何关于此特定问题的内容,无论是这个还是这个都没有在处理C++中嵌套命名空间的添加时提及它。
所以目前这是唯一的选择:
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)(似乎是嵌套命名空间定义的提议)
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
{
};
我怀疑在定义 A
之前定义 A::B
的定义可能不起作用(尽管建议似乎允许这样做)。