这是我第一次尝试用c ++重载(当然还在学习),我不太清楚为什么这段代码会出错?
bool operator<= (Vector3 v) {
if (x <= v.x) && (y <= v.y) && (z <= v.z) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
错误是
19 |错误:'('token |之前的预期标识符
和
19 |错误:预期';' 在'('token |.之前
我搜索了这两个,发现第一个是函数之外的代码(它不是),但在第二个没有找到任何东西.
谢谢阅读
除了操作员的逻辑,你似乎错过了一组括号if.这将通过语法正确:
if ( (x <= v.x) && (y <= v.y) && (z <= v.z) )
Run Code Online (Sandbox Code Playgroud)
但你真正应该做的是简化整个过程并避免不必要的if:
bool operator<= (Vector3 v) {
return (x <= v.x) && (y <= v.y) && (z <= v.z);
}
Run Code Online (Sandbox Code Playgroud)
最后,比较成员函数应该是const,因为在比较它时修改某些东西是没有意义的.此外,您可能希望通过引用传递参数,但这取决于Vector复制它的大小和成本.
bool operator<= (const Vector3& v) const
{
return (x <= v.x) && (y <= v.y) && (z <= v.z);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |