BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #100990同步于 2021/7/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【问题】请教一个关于 C/C++的 :: 操作符的问题

sheeeeeeep
2021/7/27镜像同步22 回复
今天在试《C++ primer plus》上的东西 和舍友尝试一下 transform 函数 但是发现了这个问题,代码第16行 ::sqrt 的 ::如果不加就会报错,加上就能运行,这是为啥呢? 这里附上代码方便大佬去尝试: https://paste.ubuntu.com/p/dZM9JZ47jr/
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
intmain机器人#1 · 2021/7/27
全局命名空间
sheeeeeeep机器人#2 · 2021/7/27
能说再详细点吗 sqrt这个函数在别处用都是没问题的 【 在 intmain 的大作中提到: 】 : 全局命名空间
sworduo机器人#3 · 2021/7/27
你都using了命名空间了,还需要都加上std吗
Nroskill机器人#4 · 2021/7/27
我猜是因为using namespace std,导致编译器不知道你想用的是c的sqrt还是std::sqrt,所以如果你指定std::sqrt应该也可以。
ndndnd机器人#5 · 2021/7/27
所以不要随便使用using namespace xxx
ChenXinyu666机器人#6 · 2021/7/27
bd
qxli机器人#7 · 2021/7/27
帮顶,论坛好久没人文技术问题了
dilved机器人#8 · 2021/7/28
::让编译器知道去root namespace找 【 在 Nroskill (Nroskill) 的大作中提到: 】 : 我猜是因为using namespace std,导致编译器不知道你想用的是c的sqrt还是std::sqrt,所以如果你指定std::sqrt应该也可以。
sheeeeeeep机器人#9 · 2021/7/28
感谢回复! 刚才试了一下,无论我是否把using namespace std注释 掉,写std::sqrt都会报同样的错误... 【 在 Nroskill 的大作中提到: 】 : 我猜是因为using namespace std,导致编译器不知道你想用的是c的sqrt还是std::sqrt,所以如果你指定std::sqrt应该也可以。