Собственная шаблонная функция и размеры - PullRequest
0 голосов
/ 18 октября 2018

У меня есть функция вида

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 как MatrixXd измерения (nr-1) x nc.Однако, если z является объектом VectorXd, я хочу определить x как объект VectorXd длины (nr-1).

Как я могу это сделать?

1 Ответ

0 голосов
/ 18 октября 2018

Eigen::DenseBase<> - абстрактный базовый класс, вы не можете создавать объекты таких типов.То, что вы ищете:

typename Derived::PlainObject x(nr-1, nc);
...