0

配列を含むが、固有値を介してそれらへのインターフェイスを持つクラスを作成しようとしています。

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<> にデフォルトのコンストラクターがないためだと思います。http://eigen.tuxfamily.org/dox/TutorialMapClass.html#TutorialMapPlacementNew

4

1 に答える 1

3

あなたが提供する例は私にとってはうまくいきます(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%    
于 2012-10-17T07:11:08.140 に答える