我正在读的Box2D源代码。在b2Vec2
中有()
运算符被重载,但我不明白它应该做什么。我阅读手册和该方法的参考,但仍然没有得到这是什么意思Read from an indexed element
和write to an indexed element
,而且这两种方法都有相同的身体return (&x)[i]
。这是什么意思和做什么?Box2D的矢量()运算
0
A
回答
0
多亏了之前的评论(但它是出于某种原因删除),我有一个想法,并测试了它,而且事实证明,这将允许我访问和写入分别对应于x和y使用索引0和1 。
例如:
#include <iostream>
using namespace std;
class clazz {
public:
float x, y;
clazz(float x_, float y_) : x(x_), y(y_) {}
float operator() (int i) const {
return (&x)[i];
}
float& operator() (int i) {
return (&x)[i];
}
};
int main() {
clazz f (3, 4);
cout << "f: x = " << f(0) << " y = " << f(1) << endl; // printed => f: x = 3 y = 4
f(0) = 6;
f(1) = 6;
cout << "f: x = " << f(0) << " y = " << f(1) << endl; // printed => f: x = 6 y = 6
return 0;
}
0
当你发现它是一个访问函数在向量类中的各个元素。有两个函数的原因是由于const函数需要访问元素的值而不需要修改它。请注意,您也可以在这里返回一个const引用,但这并不是必要的,因为它在浮点操作。
希望有断言到位确保代码不会索引超出了范围,因为这是很容易做到的,尤其是当你已经在你的例子使用符号变量等。
相关问题
- 1. Cython矢量运算
- 2. 模运算矢量
- 3. Matlab中的矢量运算?
- 4. Box2d冲击力矢量
- 5. 对矢量的算术运算
- 6. 运动矢量计算
- 7. 执行矢量运算
- 8. 并行化numpy的矢量运算
- 9. C++运算符()优化矢量
- 10. GCC矢量扩展赋值运算符
- 11. 在matlab中矢量化3D运算
- 12. 使用矢量重载ostream运算符
- 13. R - 关系运算符和矢量化
- 14. 矢量或和矩阵运算
- 15. C++矢量运算符重载
- 16. 运算符重载提升ublas矢量
- 17. numpy的计算矢量
- 18. 计算矢量的导数
- 19. 计算在GLSL矢量的发散(或矢量的梯度)
- 20. 如何使用+ =运算符实现标量和矢量加法?
- 21. 在矢量上滑动矢量的算法
- 22. 将点转换为矢量线的算法。 (光栅到矢量)
- 23. R:计算两个矢量
- 24. 矢量计算在LISP
- 25. 计算中间矢量角
- 26. 矢量问题算法
- 27. Python库来计算矢量
- 28. 使用delete运算符的指针矢量
- 29. 矢量容器的运算符[] - 返回引用?
- 30. R - 三元运算符的矢量化实现?