错误:无法从Double **转换为Double
我想为我的凸包项目 Calipers()创建函数。我试图创建一个类的点,但 我似乎无法使用点来提取p []。x的值到rotatePoint.x 谢谢。错误:无法从Double **转换为Double
#include "point.h"
void Point::Set_value(Point p)
{
x=p.x;
y=p.y;
}
void Point::Set_value(double nx,double ny)
{
x=nx;
y=ny;
}
void comp_geo::Calipers(int n, Point *p)
{
double Cx = &p[n].x;
double Cy = &p[n].y;
rotatePoint.x = Cx;
rotatePoint.y = Cy;
}
卡尺()不起作用。
你需要摆脱&
运营商:
void comp_geo::Calipers(int n, Point *p)
{
double Cx = p[n].x;
double Cy = p[n].y;
rotatePoint.x = Cx;
rotatePoint.y = Cy;`
}
这可以简化为这样:
void comp_geo::Calipers(int n, Point *p)
{
rotatePoint.x = p[n].x;
rotatePoint.y = p[n].y;
}
甚至这个(假设rotatePoint
是Point
):
void comp_geo::Calipers(int n, Point *p)
{
rotatePoint = p[n];
// or:
// rotatePoint.Set_value(p[n]);
}
在一个侧面说明,Point::Set_value(Point)
应通过值取Point
通过const
参考,而不是:
void Point::Set_value(const Point &p)
{
x = p.x;
y = p.y;
}
这个。 我甚至不知道为什么我试图使用一个指针。谢谢。 –
我试着在另一个函数中调用这个函数(有效地试图从p []复制到rotatepoint []。但是,只有当我把代码分解成main()时,复制才有效。是否有任何方法可以调用Caliper ()没有变量时变成零当我printf? –
@MarcoPang请[编辑]你的问题,以显示代码不适合你。你显然仍然做错了它。 –
void comp_geo::Calipers(int n, Point *p)
{
double Cx = **&**p[n].x;
double Cy = **&**p[n].y;
rotatePoint.x = Cx;
rotatePoint.y = Cy;`
}
是不需要的符号,因为它指的是存储器位置的地址,而不是值。
void comp_geo::Calipers(int n, Point *p)
{
rotatePoint.x = p[n].x;
rotatePoint.y = p[n].y;
}
什么部分“无法从Double **转换成Double”你不明白?试图将一个指针指向“double”,你期望完成什么? –
整个部分。因此,这个问题。 如果我使用'* p [n] .x'告诉我使用
在C++中没有这样的“