我正在尝试为我的凸壳项目制作一个函数, 卡尺()。我尝试为点创建一个类但是 我似乎无法使用点从p []。x中提取值到rotatePoint.x 谢谢。
#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;
}
Calipers()不起作用。
答案 0 :(得分:0)
您需要摆脱&
运算符:
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;
}
答案 1 :(得分:0)
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;
}