Eigen :: Matrix <double, 1,3> функция возвращаемого типа в функции типа структуры - PullRequest
0 голосов
/ 31 октября 2018

Я хочу написать функцию типа struct, но она возвращает вектор типа eigen::matrix (так сказать ...)

Например:

struct foo (){ double a,b,c; };  
foo FOO(){  
    typedef eigen::Matrix<double,1,3> foofoo;
    foo f;
    // .....                 // some expressions that generate some numerical values
    f.a; f.b;f.c;         // numerical values are put in here
    foofoo<<f.a, f.b,f.c; // assigned to the eigen::matrix
    return foofoo;        // attempt to return eigen::matrix type vector
}

Я не уверен, где объявить вектор типа eigen::matrix. Должно ли оно быть внутри функции или в struct, или оно должно быть отдельным struct типа eigen::matrix, или любой другой способ является предпочтительным.

1 Ответ

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

Нет такой вещи как "функция типа структуры", и ваш синтаксис объявления структуры действительно странный. Вы, кажется, путаете типы с объектами.

Вот то, что, я думаю, вам нужно, просто функция, которая возвращает экземпляр вашей eigen::Matrix специализации (которую вы назвали foofoo через псевдоним типа):

struct foo
{
   double a, b, c;
};

using foofoo = eigen::Matrix<double, 1, 3>;

foofoo FOO()
{
   foofoo result;

   foo f;
   // ... populate members of f ...
   result << f.a, f.b, f.c;

   return result;
}
...