2017-08-24 2 views
1

Je crée une classe qui devrait avoir une matrice en tant que membre protégé déclarée dans la classe d'en-tête de type MatrixXd à partir de la bibliothèque Eigen. Le problème est que si je le déclare comme MatrixXd name(5, 5);, où les dimensions de la matrice sont entre parenthèses, le compilateur le voit comme une méthode de ma classe, au lieu d'un membre.Le compilateur pense que ma construction de MatrixXd est une fonction et non un membre

Pouvez-vous m'aider?

+0

Merci pingul, je me sers 'C++ 11' et votre suggestion a résolu mon problème. – Mattia

+0

Avez-vous essayé "using namespace Eigen;" ou en utilisant "Eigen :: MatrixXd;" – Ritesh

Répondre

2

Ce que vous décrivez s'appelle the most vexing parse, et signifie que tout ce qui peut être analysé en tant que fonction devrait l'être. Nous pouvons résoudre cela en changeant la syntaxe.

En C++ 11, nous pouvons utiliser la syntaxe de liste initialiseur:

MatrixXd name{5, 5}; 

Autrement, l'un des arguments pourrait fonctionner aussi bien:

MatrixXd name(int(5), 5);