错误:无法从Double **转换为Double

时间:2017-04-27 01:17:29

标签: c++ double

我正在尝试为我的凸壳项目制作一个函数, 卡尺()。我尝试为点创建一个类但是 我似乎无法使用点从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()不起作用。

2 个答案:

答案 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;
}

甚至这个(假设rotatePointPoint):

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;
}