c++primer 4th ed上的一个问题

piginthetree 2009-02-27 11:36:36
2.16 假设 calc 是一个返回 double 对象的函数。下面哪些是非法定义?改正所有的非法定义。
(e) double calc = calc();
习题解答里面不认为(e)是非法定义, 但是我在g++编译却通不过, 如果 double calc = 一个别的数; 编译却可以通过, 但是赋值calc = calc();的话 编译又通不过, 这是gcc的问题, 还是书的问题?
error: ‘calc’ cannot be used as a function
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
piginthetree 2009-02-28
  • 打赏
  • 举报
回复
看来是书的bug哈, 谢谢大家了, 刚开始学c++, 学过c, 看来这个情况跟c一样
pengzhixi 2009-02-28
  • 打赏
  • 举报
回复
不要同名就是了.
  • 打赏
  • 举报
回复
可以把calc()函数定义在命名空间,然后double calc = space_name::calc(); 这样就不会搞得编译器迷惘了。
nineforever 2009-02-27
  • 打赏
  • 举报
回复
非法的,变量在声明之后就立即生效。所以会hide外部的calc函数。
oyljerry 2009-02-27
  • 打赏
  • 举报
回复
这种情况,最好不要用同一个名字,防止编译器搞混...
waizqfor 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 piginthetree 的帖子:]
2.16 假设 calc 是一个返回 double 对象的函数。下面哪些是非法定义?改正所有的非法定义。
(e) double calc = calc();
习题解答里面不认为(e)是非法定义, 但是我在g++编译却通不过, 如果 double calc = 一个别的数; 编译却可以通过, 但是赋值calc = calc();的话 编译又通不过, 这是gcc的问题, 还是书的问题?
error: ‘calc’ cannot be used as a function
[/Quote]
这样定义肯定是错的 编译器没那么智能啊 辨别不出你要真正赋值的含义啊
brookmill 2009-02-27
  • 打赏
  • 举报
回复
calc到底是变量,还是函数,这不是让编译器为难么?
肯定是非法的啦

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧