C++ 错误:在‘;之前应为主表达式;双人床’;修理
我正在做作业,获取两个X和y坐标,并获取它们在Point.cpp中的长度和在LineSegment.cpp中的斜率。当我尝试在Point类中调用我的setXCoord时,我遇到了这些错误 LineSegment.cpp:在成员函数“void LineSegment::setEnd1(Point)”中: LineSegment.cpp:23:错误:应在“double”之前使用主表达式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
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,这是一个点。你需要改变一部分或另一部分。。。