我有一个表单的函数
template <typename derived>
void foo(Eigen::DenseBase<Derived>& z){
nc = z.cols();
nr = z.rows();
Eigen::DenseBase<Derived> x(nr-1, nc);
}
我想要一个有点像上面的伪代码的函数。本质上,我想传递一个对象 z,它可以是 VectorXd 或 MatrixXd 对象,如果它是 MatrixXd 对象,那么我想将 x 定义为维度 (nr-1) x nc 的 MatrixXd。但是,如果 z 是 VectorXd 对象,我想将 x 定义为长度为 (nr-1) 的 VectorXd 对象。
我该怎么做?
最佳答案
Eigen::DenseBase<>
是抽象基类,您不能创建此类类型的任何对象。您正在寻找的是:
typename Derived::PlainObject x(nr-1, nc);
关于c++ - Eigen 模板函数和维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52865292/