c++ - 创建嵌套类的实例

标签 c++ c++11

我有这样的代码:

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

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

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

最佳答案

Is there a way to create only instance of class inner?

是的,你可以让outer创建与 static 一样多的实例独立实例(例如 inner 成员函数中的静态成员或局部变量)如你所愿。

And if this is possible, will this object have acces to outer::print function ?

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


outerinner类声明完全独立于实例化。这只是关于范围:

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

关于c++ - 创建嵌套类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45650554/

相关文章:

c++ - 为什么 C++11 删除的函数参与重载决策?

c++ - 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?

c++ - 为什么会发生 QEvent::ShortcutOverride 事件?

c++ - 将 c++ 对象作为指针传递给 Rcpp 中另一个函数的重用

c++ - 如何从交付给客户的 C++ 应用程序中获取调试信息?

c++ - 关于 C++ 类中的转换

c++ - 在 C++11 中调用 lambda 从高阶函数返回时出现段错误

c++ - 用于 mingw 的 msi.h

c++ - 这里有更多 C++ 中未定义的行为,很抱歉这个问题,但又是 UB

c++ - "Conversion"从类型到相同类型导致错误