|
发表于 2023-4-12 19:18:13
|
显示全部楼层
这段代码实现了一个名为twist的结构体,其中包含一个旋转部分和一个平移部分。在这个结构体中,有一个名为cast()的成员函数,用于将twist对象的模板类型转换为另一种类型,返回转换后的新类型的twist对象。
在调用这个函数时,使用了c++中的模板语法,即通过关键字template来指定要进行类型转换的新类型newtype。具体而言,通过对rot和pos成员变量调用eigen库中matrix和quaternion类中的cast()函数,将它们的数据类型从当前类型转换为newtype类型。
这里需要注意的是,在调用cast()函数时,因为rot是一个eigen::quaternion类型的变量,而这个类是一个模板类,所以需要使用rot.template cast<newtype>()的形式。这里的template关键字告诉编译器,cast()是quaternion模板类中的一个模板函数,需要进行模板参数推断。
至于为什么不是this->rot.cast<newtype>(),这是因为cast函数也是一个模板函数,如果直接使用this->rot.cast<newtype>()会导致编译器无法正确解释这个表达式的含义。因此需要加上template关键字以明确指出这是一个模板函数。 |
|