Re: [eigen] How to return an Eigen matrix

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


On Sat, 1 Oct 2011, Hung Dang wrote:

I am new to Eigen so I am sorry for my naive question. I am trying to
write a function which will return an Eigen template matrix (see code
below). In my code func2 works fine, however, func1 does not. The g++
compiler complain that there is no matching function for call to func1.
[...]
template <class T>
inline Matrix<T, Dynamic, Dynamic> & func1(){
 // Do something then return a matrix
 Matrix<T, 3, 5> A;
 return A;
}
[...]
 Matrix<double, Dynamic, Dynamic> A = func1();


In addition to the issues pointed out by Jose and Manuel, there is also the problem that the different instantiations of func1 only differ in the return type. When you write "func1()", the compiler does not know whether you want the template argument T to be double or int or something else (in principle it could derive it from the context in this case, but the C++ standard says it shouldn't). Thus, you have to specify that T is double by writing

   Matrix<double,Dynamic,Dynamic> A = func1<double>();

A book on C++ template should point you in the right direction.


Jitse



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/