0

배열이 포함되어 있지만 고유를 통해 인터페이스가있는 클래스를 만들려고합니다.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 ; 

내가지도 <>는 기본 생성자가 없기 때문에 문제가 가정합니다. http://eigen.tuxfamily.org/dox/TutorialMapClass.html#TutorialMapPlacementNew

답변

1

당신이를 호출 할 때 나는 다음과 같은 출력을 얻을

g++ test.cpp -std=c++0x -o test -I/usr/include/eigen3 

날 (아이겐 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 ;  
} 

에 대한 작업 컴파일 않는 경우에 제공하는 예 테스트 실행 파일 :

[/tmp]% ./test   
0.12 
2.07717e-317 
0%