鱼C论坛

 找回密码
 立即注册
查看: 2273|回复: 3

cast问题

[复制链接]
发表于 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关键字以明确指出这是一个模板函数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-16 04:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表