2017-01-19 16 views
0

Es scheint ein Problem mit dem folgenden Code zu sein. Ich erhalte die Fehlermeldungunqualifizierte ID mit Eigen-Klasse

error: expected unqualified-id before numeric constant

Eigen::Matrix M_inv1_abc = pose_l.block<3, 3>(0, 0).inverse(); This is a code sample:

template<typename T> 
Eigen::Matrix<T, 4, 1> Function(Eigen::Matrix<T, 3, 4> pose_l) 
{ 

// fails here 
Eigen::Matrix<T, 3, 3> M_inv1 = pose_l.block<3, 3>(0, 0).inverse(); 

// this works, sample is from https://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html 
Eigen::MatrixXf m(4,4); 
Eigen::MatrixXf y(2,2); 
m << 1, 2, 3, 4, 
     5, 6, 7, 8, 
     9,10,11,12, 
    13,14,15,16; 
y = m.block<2,2>(1,1); 

} 

Mit der Probe MatrixXf ich meine Vorlage nicht verwenden ...

I pose_l und M_inv1 umbenannt; in anderen Posts, wie Expected unqualified-id before numeric constant for defining a number half eine Neudefinition, aber nicht in meinem Fall.

Was fehlt mir?

Beste ManuKlause

+1

Sehen Sie diese [Seite] (http://eigen.tuxfamily.org/dox/TopicTemplateKeyword. html), müssen Sie das Template Schlüsselwort vor dem Block hinzufügen: 'pose_l.template Block <3, 3> (0, 0)'. – ggael

+0

Danke, das hat geholfen. Ich möchte deinen Beitrag als Lösung markieren, wie kann ich das machen (neu in diesem Forum ...) – ManuKlause

Antwort

0

testen (Hinzufügen von Klammern um den Block Unterausdruck):

template<typename T> 
Eigen::Matrix<T, 4, 1> Function(Eigen::Matrix<T, 3, 4> pose_l) 
{ 
    Eigen::Matrix<T, 3, 3> M_inv1 = (pose_l.block<3, 3>(0, 0)).inverse(); 
    // ... 
} 
Verwandte Themen