在嵌套类的封闭类范围内定义成员函数
Definition of member functions in the scope of the enclosing class for a nested class
在 c++ 草案标准中,我们在 [class.nest] 中有这样的语句:
2 嵌套类的成员函数和静态数据成员可以在包含其类定义的命名空间作用域中定义。 [示例:
struct enclose { struct inner { static int x; void f(int i); }; }; int enclose::inner::x = 1; void enclose::inner::f(int i) { /* ... */ }
—结束示例 ]
我的困惑是,如果这是可能的,那么为什么以下是不可能的:
struct enclose {
struct inner {
void f(int i);
};
void inner::f(int i) {}
};
错误:无法在"封闭"中定义成员函数"enclose::inner::f" void inner::f(int i( {}
f
的定义不是包含在包含inner
类定义的同一范围内吗?
如果不是,那为什么不允许这样做?在类范围内定义此函数有什么问题?
您引用的措辞说它可以在命名空间范围内定义。您正在尝试在 struct enclose
中定义它,这是类作用域,而不是命名空间作用域。
相关文章:
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- C++令牌定义成员
- 在没有类定义的标头中定义成员变量
- 如何在类的构造函数中定义成员向量的大小
- 如何在C++中动态定义成员函数
- C++ Boost.Serialization - 用户定义成员的非侵入式序列化
- C++类 - 使用公共变量并在类外定义成员函数
- G++ - 对已定义成员函数的未定义引用
- 在哪里以及如何定义成员变量?在头文件还是实现文件中?
- 是否可以修改STL并自定义成员函数
- 从 boost::mpl:vector 类型列表中定义成员变量
- 在构造对象时定义成员函数
- 为什么定义成员函数指针变量需要类名
- 复制构造函数中的 C++ 用户定义成员
- 如何根据类参数定义成员类运算符
- 使用指向未定义成员函数的指针时的未定义引用
- 如何在运行时定义成员数组大小
- C++-在模板类之外但在头中定义成员函数
- c++在不知道对象类型的情况下定义成员函数指针
- 在特定偏移量中定义成员的结构