如何解决接受矩阵 col 和向量的特征模板函数
我无法理解如何编写接受向量和矩阵列的模板化函数?
例如:
template<typename T>
void foo(
const Eigen::MatrixX<T>& M){
}
int main(){
Eigen::VectorX<double> v(3);
Eigen::MatrixX<double> m(4,3);
foo(m); // fine
foo(m.col(0)); // broken
foo(m.row(0)); // broken
foo(v); // broken
}
只有 foo(m);
可以。
我已经 seen examples 使用预定义类型执行此操作,并且我已经看到 examples 探索模板。他们都没有展示如何使用模板化函数解决所描述的任务。
编辑: 另外我想传递动态大小向量,但不是必需的,固定大小
解决方法
我可以使用 MatrixBase
让它工作:
#include <Eigen/Dense>
template<typename T>
void foo(const Eigen::MatrixBase<T>& M){}
int main(){
Eigen::Vector3d v(3);
Eigen::Matrix<double,4,3> m(4,3);
Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> q(5,6);
foo(m);
foo(m.col(0));
foo(m.row(0));
foo(v);
foo(q);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。