C++ 错误:在‘;之前应为主表达式;双人床’;修理

C++ 错误:在‘;之前应为主表达式;双人床’;修理,c++,class,C++,Class,我正在做作业,获取两个X和y坐标,并获取它们在Point.cpp中的长度和在LineSegment.cpp中的斜率。当我尝试在Point类中调用我的setXCoord时,我遇到了这些错误 LineSegment.cpp:在成员函数“void LineSegment::setEnd1(Point)”中: LineSegment.cpp:23:错误:应在“double”之前使用主表达式 void LineSegment::setEnd1(Point p1) { p1.setXCoord

我正在做作业,获取两个X和y坐标,并获取它们在Point.cpp中的长度和在LineSegment.cpp中的斜率。当我尝试在Point类中调用我的setXCoord时,我遇到了这些错误

LineSegment.cpp:在成员函数“void LineSegment::setEnd1(Point)”中: LineSegment.cpp:23:错误:应在“double”之前使用主表达式

void LineSegment::setEnd1(Point p1)
{
       p1.setXCoord(double);                        // set first xcoordinate to p1
        p1.setYCoord(double);                   // set first ycoordinate to p1
}
LineSegment.cpp:在成员函数“double LineSegment::getEnd1()”中: LineSegment.cpp:35:错误:无法将“点”转换为“双精度”

double LineSegment::getEnd1()
{
    return p1;                          // return first set of points
}
我的分数在我的分数中。hpp类分数设置为双精度

Point(double x = 0.0, double y = 0.0)
{
    XCoord = x;
    YCoord = y;
}
主要问题(显然,正如编译器已经说过的)就在这里,而且只有这里:

void LineSegment::setEnd1(Point p1)
{
       p1.setXCoord(double);                        // set first xcoordinate to p1
        p1.setYCoord(double);                   // set first ycoordinate to p1
}
哪里会发生什么?声明类型为
void(Point)
的成员函数
LineSegment::setEnd1
。现在,
Point
类有一个名为
setYCoord
的成员函数,其类型不是您提供的

现在,
double
是一个表示双精度浮点基本类型的关键字。C++语义规则禁止关键字作为标识符,除了少数例外,即<代码>最终< /代码>和<代码>覆盖> <代码>。因此,调用
Point::setXCoord()
的两行代码都是无效的。如果您试图传递“类型参数”,请查看

否则,您应该将适当的值传递给函数(在standardese和编译器理论中也称为
表达式)

您没有提供所述函数的源代码,因此我无法再为您提供有关该函数的信息

现在,第二个错误意味着编译器不知道如何将-
p1
-的类型转换为双精度。首先,这不符合逻辑。一个
包含两个
double
s,那么如何神奇地将其转换为一个
double
?您可以对它执行一些操作,并返回该操作的结果。无论如何,如果您坚持认为这会产生任何逻辑,则可以声明隐式类型转换成员函数:

class Point {
    // ...

    public:
        // ...

        operator double() {
            // Somehow transform a Point into a double and return that
        }
};

我希望这能给你带来一些启示

问题在于
setXCord()
setYCord(
)函数将
double
类型值作为参数,因此需要将
double
类型值传递给它们。您所做的只是放置了应该传入的值的变量类型。换句话说,您需要传递一个实际值,而不是double

double
是一种类型,不能将其作为参数传递给函数。应该传递一个实际值。getEnd1()函数返回一个double,但返回的是p1,这是一个点。你需要改变一部分或另一部分。。。