创建嵌套类的实例

3 c++ c++11

我有这样的代码:

class outer{
   int x;
   class inner{
     int y;
   }

   void print(int t_x){
     std::cout << t_x;
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法只创建类inner的实例?并且如果可能的话,该对象是否可以访问external :: print函数?

use*_*042 6

有没有办法只创建类inner的实例?

是的,您可以根据需要outer创建尽可能多的实例独立实例(例如,作为静态成员或static成员函数中的局部变量)inner

如果可能的话,该对象是否具有outer::print功能?

No. outer::print()仅适用于的实例outer,因此至少需要一个参数或的本地实例outer


outerinner类的声明是完全独立的有关实例。它仅涉及范围:

  • inner类型仅在private outer类范围内可见(可以使用通过函数接收的auto外部匿名类型来规避outer
  • inner有权访问publicprotected以及(特殊范围特权)的private成员outer
  • outer可以像往常一样访问任何public成员inner(无特殊特权)