2015-01-03 4 views
1

아마 누군가가 알기에 Eigen에서 선언 형을 전달할 수 있습니까? MatrixXd & VectorXd?형식의 전달 선언 MatrixXd & VectorXd?

/usr/include/eigen3/Eigen/src/Core/Matrix.h:372:34 : 오류 : '형식 정의 클래스 아이겐을 선언 충돌 :: 매트릭스 컴파일하는 동안

, 나는 다음과 같은 오류가 Eigen :: MatrixXd '

typedef 매트릭스 매트릭스 ## SizeSuffix ## TypeSuffix;

SIMP.h

#ifndef SIMP_H 
#define SIMP_H 


namespace Eigen 
{ 
    class MatrixXd; 
    class VectorXd; 
} 

class SIMP { 
public: 
    SIMP(Eigen::MatrixXd * gsm, Eigen::VectorXd * displ); 
    SIMP (const SIMP& other) = delete; 
    ~SIMP(){} 
    SIMP& operator= (const SIMP& other) = delete; 
    bool operator== (const SIMP& other) = delete; 


private:  
    Eigen::MatrixXd * m_gsm; 
    Eigen::VectorXd * m_displ; 

}; 

#endif // SIMP_H 

SIMP.cpp

#include "SIMP.h" 
#include <Eigen/Core> 
SIMP::SIMP(Eigen::MatrixXd * gsm, Eigen::VectorXd * displ) : 
    m_gsm(gsm), 
    m_displ(displ), 
{ 

} 

답변

2

아니, 당신은 "앞으로 선언"유형 별칭 수 없습니다 MatrixXdVectorXd가 모두 class ES있다; 그들은 타입 앨리어스 (alias)입니다.

가장 좋은 방법은 typedef 문을 작성하여 직접 유형 별칭을 직접 소개하는 것입니다. 이것은 아마도 나쁜 생각 일 것입니다.

출력의 마지막 줄은 매우 의심 스럽습니다. 매크로 정의처럼 보이는데, 컴파일러 오류에서 분명히 나타나지 않아야합니다.

+0

명백한 템플릿을 설정하기위한 몇 가지 자동 typedef =) –

+0

답변 해 주셔서 감사합니다! –