错误:修复“double”之前应为主表达式
error: expected primary-expression before ‘double’ fix?
我正在处理我的任务,以获得两个xand y坐标,并在Point.cpp中获得它们的长度,在LineSegment.cpp中获取它们的斜率。当我试图在我的点类中调用我的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:错误:无法在返回中将"Point"转换为"double"
double LineSegment::getEnd1()
{
return p1; // return first set of points
}
我的Point在我的Point.hpp类中,Point设置为double。
Point(double x = 0.0, double y = 0.0)
{
XCoord = x;
YCoord = y;
}
问题是setXCord()
和setYCord(
)函数将double
类型的值作为参数,因此需要将double
类型的值传递到它们中。你所做的只是放置你应该传递的值的变量类型。换句话说,你需要传递一个实际值,而不是加倍。
主要问题(显然,正如编译器已经说过的)就在这里,而且只在这里:
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++语义规则不允许将关键字用作标识符,只有少数例外,即final
和override
。因此,调用Point::setXCoord()
的两条线路都是无效的。如果您试图传递一个"类型参数",请查看模板。
否则,您应该向函数传递一个适当的值(在标准语言和编译器理论中也称为expression
)。
你没有提供上述函数的来源,所以我不能再为你做任何事情了。
现在,第二个错误意味着编译器不知道如何将任何类型的-p1
-此处(它是Point
,否?)转换为双精度。首先,这毫无逻辑可言。一个Point
包含两个double
,那么如何神奇地将其转换为单个double
呢?您可以对它执行一些操作,并返回该操作的结果。无论如何,如果您坚持认为这会产生任何逻辑,那么您可以声明一个隐式类型转换成员函数:
class Point {
// ...
public:
// ...
operator double() {
// Somehow transform a Point into a double and return that
}
};
我希望这能给你带来一些启示!
- (C++)分析树以计算返回错误值的简单算术表达式
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 提升精神:解析布尔表达式并简化为规范范式
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- Boost Graph Library,修复节点大小
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 如何修复"二进制表达式的无效操作数"?
- 如何修复此错误:二进制表达式的操作数无效("std::vector<double>"和"double")?
- 如何将无效操作数修复为二进制表达式
- 如何将无效操作数修复为带有字符串的二进制表达式?
- 如何修复 c++ 中的"错误:')' 标记之前的预期主表达式"?
- 如何修复:在c++中使用pthread执行lambda表达式
- 如何修复 pimpl 实现中预期的主要表达式编译错误
- 修复表达式;运算符优先级
- 如何修复表达式必须具有对象类型 C++
- 后期修复表达式解算器
- 错误:修复“double”之前应为主表达式
- 如何修复这个错误表达式必须有一个类类型和C228
- 如何修复c++预期主表达式错误