我有这样的代码:

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

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

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

最佳答案



是的,您可以让 outer 创建任意数量的 static 实例独立实例(例如,作为 inner 成员函数中的静态成员或局部变量)。



不可以。 outer::print() 仅适用于 outer 的实例,因此至少需要一个参数或 outer 的本地实例。
outerinner 类声明在实例化方面完全独立。这只是关于范围:

  • inner 类型仅在 private outer 类作用域内可见(可以使用通过函数接收的 auto 之外的匿名 outer 类型来规避)
  • inner 可以访问 public 的任何 protectedprivateouter 成员(特殊范围特权)
  • outer 可以像往常一样访问 public 的任何 inner 成员(没有特殊权限)
  • 关于c++ - 创建嵌套类的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45650554/

    10-13 08:26