C++;未编译的代码 < >我编写的用于解决SpJ问题的C++代码没有编译,它在我的PC上编译得很长,但不是在SpJ或IDENo.com上编译。我很难理解它显示的错误。请帮助!! #包括 #包括 #包括 #包括 使用名称空间std; 结构点{ int xx;int yy;int zz; 布尔常数运算符1; 如果(l==r) { 树[ID]=1; 返回; } L[ID]=L[ID]; R[ID]=R[ID]; 如果(l
如错误中所述,编译器无法找到正确的比较运算符,因为它应定义为C++;未编译的代码 < >我编写的用于解决SpJ问题的C++代码没有编译,它在我的PC上编译得很长,但不是在SpJ或IDENo.com上编译。我很难理解它显示的错误。请帮助!! #包括 #包括 #包括 #包括 使用名称空间std; 结构点{ int xx;int yy;int zz; 布尔常数运算符1; 如果(l==r) { 树[ID]=1; 返回; } L[ID]=L[ID]; R[ID]=R[ID]; 如果(l,c++,C++,如错误中所述,编译器无法找到正确的比较运算符,因为它应定义为 bool const operator < (point b) bool const运算符
bool const operator < (point b)
bool const运算符<(点b)
而不是
bool const operator < (point& b)
bool const运算符<(点和b)
编辑:如评注所述
bool const operator < ( point const & b)
bool const运算符<(点常量和b)
将重载运算符移到结构之外可能是更好的方法:
struct point
{
int xx;
int yy;
int zz;
};
bool const operator < (const point &a, const point &b) const
{
return xx < b.xx;
}
结构点
{
int xx;
int-yy;
int zz;
};
布尔常数运算符<(常数点a、常数点b)常数
{
返回xx
发布有关生成错误的问题时,请完整、完整且未经编辑地包含实际错误(包括编译器可能输出的任何信息性注释)在问题的实际主体中。至于你展示的代码,使用不可识别的类型别名和使用重新定义公共符号的宏可能对你有好处,但对其他应该阅读和理解代码的人没有好处。还有“其他人”在几个月的时间里,当你有时间忘记这些事情,然后尝试重新阅读代码时,我会把你包括在内。这样的事情是通往成功的道路。SPOJ不是代码高尔夫。摆脱LL
和那些宏废话!!如何让你的代码不可读和容易出错“节省时间”?或被声明为采用恒定参考,即点常数&b
(通常如此)。
bool const operator < ( point const & b)
struct point
{
int xx;
int yy;
int zz;
};
bool const operator < (const point &a, const point &b) const
{
return xx < b.xx;
}