C++ 混淆(*此)指针的类型

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

这是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++中开发) 调用以下命令时,将调用该函数

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坏巨魔。非常感谢。宇宙又恢复了秩序!