c++ - Eigen 模板函数和维度

标签 c++ eigen

我有一个表单的函数

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/

相关文章:

C++文件读取错误

c++ - 计算 Eigen::Matrix 的 sign() 的最佳方法

c++ - 如何使用 Eigen 库计算矩阵幂?

c++ - Eigen 与 QGenericMatrix

c++ - std::string 试图释放错误的内存

c++ - 将一些数据结构写入文件

c++ - Eigen C++ 中的矩阵矩阵

c++ - 什么是 Eigen::array(不是 Eigen::Array)

c++ - ';' token 之前的错误 : expected ',' , ')' 或 '='

c++ - "Conditional jump or move depends on uninitialised value",但堆栈跟踪中未列出分配函数。如何?