CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

嵌套类简单问题

楼主routecpp(努力中)2006-07-03 11:34:24 在 C/C++ / C++ 语言 提问

在书上看到:外围类不能访问嵌套类的受保护成员(意指protected/private成员),除非将外围类声明为嵌套类的友元。  
  但是下面的类定义居然成功地通过了编译:  
  class   outer{  
  private:  
  int   f;  
  class   inner{  
  public:  
  void   test(outer   o)  
                                      {  
                                                cout   <<   o.f;//这里明明引用了外围类的私有成员"f",可是编译器没有报错  
                                      }  
  };  
  };  
  这是为什么呢???望高手指教!! 问题点数:20、回复次数:8Top

1 楼UPCC(杂食动物)回复于 2006-07-03 11:40:31 得分 4

这是对的啊,就想函数访问外边的变量的道理一样啊,域的问题Top

2 楼Improving()回复于 2006-07-03 11:47:02 得分 4

outer类是外围类,inner是嵌套类。外围类不能访问嵌套类的受保护成员。而你这个例子是:在嵌套类中访问外围类的成员,这是允许的。Top

3 楼triace_zhang(『雪梨码头』)回复于 2006-07-03 11:50:46 得分 4

LZ的本意是这个吧。  
   
  class   outer{  
  private:  
  int   f;  
  class   inner{  
  public:  
  void   test(outer   o)  
  {  
  cout   <<   o.f;//这里明明引用了外围类的私有成员"f",可是编译器没有报错  
  }  
  private:  
                  int   m;  
  };  
   
  inner   in;  
  void   ff()   {   in.m;   }     //错误,m是in的private成员.  
  };Top

4 楼YeTimmy()回复于 2006-07-03 11:55:36 得分 4

vc下就编译通不过  
  在C++   Primer里面也写着是不能访问的  
  可是在Dev-C++中却通过了,不知道该相信谁-_-#Top

5 楼routecpp(努力中)回复于 2006-07-03 12:07:59 得分 0

少写了一句话“嵌套类也没有任何特权访问其外围类的私有成员”。  
  出处:c++   primer(第3版)552页Top

6 楼triace_zhang(『雪梨码头』)回复于 2006-07-03 12:45:58 得分 4

楼主没有仔细看书啊,试试:  
   
  #include   <iostream>  
  using   namespace   std;  
   
  class   outer{  
  private:  
          int   f;  
  public:  
          class   inner{  
          public:  
                  void   test(outer   o)  
                  {  
                          cout   <<   o.f;//这里明明引用了外围类的私有成员"f",可是编译器没有报错  
                  }  
          };  
           
  private:         //先编译一遍,再把这儿改为public:   试试。  
          inner   in;       //定义一个嵌套类的成员  
  };  
   
  int   main()  
  {  
          outer   ot;  
          ot.in.test(   ot   );       //用嵌套类成员调用外围类的函数  
  return   1;  
  }  
   
  书里说得是:嵌套类的private成员无法访问外围类的变量  
                                                  ^^^^Top

7 楼OOPhaisky(异化$渴望成功~~)回复于 2006-07-03 13:19:36 得分 0

to   triace_zhang(『雪梨码头』)   :  
   
  "嵌套类的private成员无法访问外围类的变量",首先没找到这句话,其次这句话与我的问题好像没有关系阿。  
   
  我的问题是,书上552页“嵌套类也没有任何特权访问其外围类的私有成员”??Top

8 楼OOPhaisky(异化$渴望成功~~)回复于 2006-07-03 16:25:48 得分 0

哎?楼主怎么结贴了???问题还没有解决阿?  
  我也借贵宝地问你那个问题啊,跟你有相同的困惑!!Top

相关问题

关键词

得分解答快速导航

  • 帖主:routecpp
  • UPCC
  • Improving
  • triace_zhang
  • YeTimmy
  • triace_zhang

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo