gpt4 book ai didi

c++ - 为什么代码在添加范围解析参数后可以工作?

转载 作者:行者123 更新时间:2023-11-28 01:21:20 25 4
gpt4 key购买 nike

所以我有这个程序,它有一个 3D 点类和一个找出两点之间距离的函数。当我在 main 中正常使用 distance 函数时,它会报错。但是当我添加范围解析运算符时,代码就可以工作了。是什么导致了错误以及范围解析运算符如何修复它?

此错误发生在 Dev-C++ 和 Codeblocks 中,但在使用带有 MinGW 编译器的 gpp 编译器插件的 Atom IDE 中工作正常。

#include <iostream>
#include <cmath>
using namespace std;

class Point{...} //Class object with x, y, and z variable and has functions to return values

float distance(Point p1, Point p2);

int main() {
Point P1, P2;
d = distance(P1, P2); // throws an error but just adding -> ::distance(P1, P2) works fine! why?
cout << "Distance between P1 and P2: " << d << endl;
return 0;
}

float distance(Point p1, Point p2) {
float d;
int x0 = p1.getX(), y0 = p1.getY(), z0 = p1.getZ();
int x1 = p2.getX(), y1 = p2.getY(), z1 = p2.getZ();
d = sqrt(pow((x1-x0),2) + pow((y1-y0), 2) + pow((z1-z0), 2));
return d;
}

最佳答案

如果没有实际的错误消息就无法确定,但看起来问题出在 using namespace std;。这引入了 std::distance() 函数,这不是您想要的,但是使用范围运算符请求全局 distance() 函数再次起作用。

避免引入整个 std 命名空间。

关于c++ - 为什么代码在添加范围解析参数后可以工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56127333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com