C++ 混淆(*此)指针的类型
这是Transform类中ROS()中Transform.h的代码C++ 混淆(*此)指针的类型,c++,casting,ros,C++,Casting,Ros,这是Transform类中ROS()中Transform.h的代码 /**@brief Return the transform of the vector */ TFSIMD_FORCE_INLINE Vector3 operator*(const Vector3& x) const { return (*this)(x); } 有人能解释一下这段代码在做什么吗?这就是我的想法(对于上下文,我有几年的C程序员的经验,第一次在C++中开发) 调用以下命令时,将调用该函数 obj
/**@brief Return the transform of the vector */
TFSIMD_FORCE_INLINE Vector3 operator*(const Vector3& x) const
{
return (*this)(x);
}
有人能解释一下这段代码在做什么吗?这就是我的想法(对于上下文,我有几年的C程序员的经验,第一次在C++中开发)
调用以下命令时,将调用该函数
object_of_type_Transform * object_of_type_Vector3
然后,它将Vector3对象强制转换为Transform对象并返回结果(我不清楚这是如何实现的,因为这两种类型似乎不兼容)
但是返回的结果是向量3。。。这就是我的思维模式崩溃的地方
此外,该函数应基于变换类变换矢量3点。。。所以我的理解肯定有缺陷
如果您有任何见解,我将不胜感激
谢谢
编辑
谢谢你的回复!右上方的功能是:
/**@brief Return the transform of the vector */
TFSIMD_FORCE_INLINE Vector3 operator()(const Vector3& x) const
{
return Vector3(m_basis[0].dot(x) + m_origin.x(),
m_basis[1].dot(x) + m_origin.y(),
m_basis[2].dot(x) + m_origin.z());
}
/**@brief Return the transform of the vector */
TFSIMD_FORCE_INLINE Vector3 operator*(const Vector3& x) const
{
return (*this)(x);
}
我明白了,现在发生了什么。再次感谢
然后,它将Vector3对象强制转换为Transform对象,并返回该结果
没有,没有演员出演;这:
return (*this)(x);
相当于:
return this->operator()(x);
在这两种情况下,代码都在调用Transform::operator()
并将x
传递给它。第一个代码中的括号是必需的,因为()
绑定比*
强,所以如果*周围没有括号,那么这个代码就相当于返回*(这个(x))代码>–编译错误
顺便说一下,这是一个非常实用的C++代码,但是我可以看到C程序员的语法会怎么混淆(毕竟,你不能重载运算符,更不用说<代码>操作程序)(<代码>)。0/10坏巨魔。非常感谢。宇宙又恢复了秩序!