创建嵌套类的实例

时间:2017-08-12 12:58:54

标签: c++ c++11

我有这样的代码:

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

   void print(int t_x){
     std::cout << t_x;
   }
}

有没有办法只创建类内部的实例?如果这是可能的,这个对象是否可以访问outer :: print函数?

1 个答案:

答案 0 :(得分:5)

  

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

是的,您可以让outer根据需要在static创建尽可能多的与实例无关的实例(例如,inner成员函数中的静态成员或局部变量)。

  

如果可以,这个对象是否可以访问outer::print函数?

没有。 outer::print()仅适用于outer的实例,因此至少需要outer的参数或本地实例。

outerinner类声明在实例化方面完全独立。它只涉及范围:

  • inner类型只能在private outer类范围内看到(可以使用通过函数收到的auto之外的匿名outer类型来规避)
  • inner有权访问public的任何protectedprivateouter成员(特殊范围权限)
  • outer可以像往常一样访问public innerloadoutAdvWeaponPanels[0][0]成员(无特殊权限)