我正在尝试拥有一个包含数组的类,但是通过eigen有一个接口。
class A {
public:
array<double,3> xa;
Map<Matrix<double,3,1>> x;
A() : x(xa.data(),xa.size()) {}
};
这不起作用:
A a;
a.xa[0] = 0.12;
cout << a.x ;
我认为问题是因为Map&lt;&gt;没有默认构造函数。 http://eigen.tuxfamily.org/dox/TutorialMapClass.html#TutorialMapPlacementNew
答案 0 :(得分:1)
您提供的示例对我有用(Eigen 3.0.1和GCC 4.6.1)
#include <Eigen/Core>
#include <array>
#include <iostream>
using namespace std;
using namespace Eigen;
class A {
public:
array<double,3> xa;
Map<Matrix<double,3,1>> x;
A() : x(xa.data(),xa.size()) {}
};
int main()
{
A a;
a.xa[0] = 0.12;
cout << a.x ;
}
用
编译时g++ test.cpp -std=c++0x -o test -I/usr/include/eigen3
调用生成的测试可执行文件时,我得到以下输出:
[/tmp]% ./test
0.12
2.07717e-317
0%