C++ 具有本征类的非限定id
下面的代码似乎有问题。我收到了错误信息 错误:数字常量前应为非限定id 特征::矩阵M_inv1_abc=姿势块(0, 0)逆(); 这是一个代码示例:C++ 具有本征类的非限定id,c++,eigen,C++,Eigen,下面的代码似乎有问题。我收到了错误信息 错误:数字常量前应为非限定id 特征::矩阵M_inv1_abc=姿势块(0, 0)逆(); 这是一个代码示例: 模板 特征::矩阵函数(特征::矩阵姿态) { //这里失败了 特征::矩阵M_inv1=姿势块(0,0).inverse(); //这是有效的,样品来自https://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html 本征::矩阵m(4,4); 本征::矩阵y(2,2); m尝试
模板
特征::矩阵函数(特征::矩阵姿态)
{
//这里失败了
特征::矩阵M_inv1=姿势块(0,0).inverse();
//这是有效的,样品来自https://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html
本征::矩阵m(4,4);
本征::矩阵y(2,2);
m尝试以下操作(在块子表达式周围添加括号):
模板
特征::矩阵函数(特征::矩阵姿态)
{
特征::矩阵M_inv1=(姿势块(0,0)).inverse();
// ...
}
姿势模板块(0,0).inverse();
详细说明,你可以参考C++如何推断变量的类型< /p>见,你需要在块之前添加模板关键字:<代码> PaseY.List模板块(0, 0)< /C>。谢谢,这有帮助。我想把你的帖子标记为解决方案,我怎么做(在这个论坛中新建)
template<typename T>
Eigen::Matrix<T, 4, 1> Function(Eigen::Matrix<T, 3, 4> pose_l)
{
// fails here
Eigen::Matrix<T, 3, 3> M_inv1 = pose_l.block<3, 3>(0, 0).inverse();
// this works, sample is from https://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html
Eigen::MatrixXf m(4,4);
Eigen::MatrixXf y(2,2);
m << 1, 2, 3, 4,
5, 6, 7, 8,
9,10,11,12,
13,14,15,16;
y = m.block<2,2>(1,1);
}
template<typename T>
Eigen::Matrix<T, 4, 1> Function(Eigen::Matrix<T, 3, 4> pose_l)
{
Eigen::Matrix<T, 3, 3> M_inv1 = (pose_l.block<3, 3>(0, 0)).inverse();
// ...
}
pose_l.template block<3, 3>(0, 0).inverse();