CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

关于成员函数声明时调用其它成员函数的问题

楼主Candiyar(水蓝郡)2005-07-02 22:48:07 在 C/C++ / C++ 语言 提问

想实现某个成员函数参数值,缺省为另外一个成员的返回值。似乎行不通,想请教一下内部的道理和机制。  
   
  如下:  
   
  情况(1)  
  class   A  
  {  
      ……  
      get();  
      func(int   i   =   this->get()   );  
  }  
  在VC++和DEV-C++下均报错,大意是this只能使用在一个非static成员函数的内部。  
   
   
  情况(2)  
  class   A  
  {  
      ……  
      get();  
      func(int   i   =   get()   );  
  }  
  在VC++下报错:对non-static函数get()非法调用。DEC-C++下通过。  
   
   
  情况(3)  
  class   A  
  {  
      ……  
      get();  
      func(int   i   =   A::get()   );  
  }  
  在VC++下报错:get不是一个全局namespace的成员。DEC-C++下通过。  
   
  想请教一下个中原因啊?  
   
  如果一定要实现func的缺省参数为get()的返回值,有什么办法呢?谢谢!~~ 问题点数:40、回复次数:2Top

1 楼newbiestar()回复于 2005-07-02 22:57:40 得分 25

这个当然不可以……  
   
  C++强制规定了缺省参数必须要在编译期确定下来(譬如某个常量)或者必须在编译期就可以确定位置(譬如static的对象),你这样的行为明显违反了这个规定。因为this只有在对象实例已经产生的情况下才能被使用,非静态成员函数的调用使用了this调用协议,会偷偷传递this指针,这个在运行时才能确定,所以当然不能允许你这样调用。Top

2 楼fangrk(加把油,伙计!)回复于 2005-07-02 23:39:59 得分 15

你的get的返回类型应该是int吧?int   get(){...}  
   
  原因楼上说了,缺省参数是编译期间确定的,而get的返回值明显是运行期的!至于DEV-C++通过,不清楚。可以装个Borland的编译器看看。就算DEV-C++可以,你的程序也是没有可移植性的,而且很脆弱。Top

相关问题

  • 调用char *成员函数
  • 函数指针的声明与调用
  • _stdcall等函数的声明与调用
  • php类在成员函数中怎么调用另一个成员函数?
  • 怎样在一个成员函数调用另一个成员函数?
  • 一个类的成员函数可以调用另一个成员函数吗?
  • 如何在静态成员函数中调用非静态成员函数?
  • 请问如何在static成员函数中调用非static成员函数?
  • 虚函数以及非虚函数的调用,对象是怎么调用成员函数的?
  • 调用静态数据成员和成员函数

关键词

  • c++
  • vc++
  • 函数
  • vc
  • 调用
  • 成员函数
  • 报错
  • 参数
  • 缺省
  • 返回值

得分解答快速导航

  • 帖主:Candiyar
  • newbiestar
  • fangrk

相关链接

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

广告也精彩

反馈

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