Reputation: 185
I'm using the Eigen Library here: http://eigen.tuxfamily.org/index.php?title=Main_Page
When trying to compile this, it returns
error: expected constructor, destructor, or type conversion before '.'
complaining about the lines where i add the xaxis...zaxis to the matrix. is it possible it's because gcc4.3 (which is the compiler i'm using) doesn't like this type of initialization because the dot usually is a function call (which wouldn't work on an uninitialized object)?
but to me it seems to follow exactly the tutorial example here: http://eigen.tuxfamily.org/dox/TutorialAdvancedInitialization.html , except for the static, but the error is the same without it. I tried using the comma separated initialization but again it's the same.
// axis system
static Eigen::Matrix<double, 3, 1> s_xAxis(1.,0.,0.); //!< global x Axis;
static Eigen::Matrix<double, 3, 1> s_yAxis(0.,1.,0.); //!< global y Axis;
static Eigen::Matrix<double, 3, 1> s_zAxis(0.,0.,1.); //!< global z Axis;
// origin
static Eigen::Matrix<double, 3, 1> s_origin(0.,0.,0.); //!< origin position
static Eigen::Matrix<double, 3,3> s_idRotationZinverse;
s_idRotationZinverse.col(0) << s_yAxis;
s_idRotationZinverse.col(1) << s_xAxis;
s_idRotationZinverse.col(2) << -s_zAxis;
Upvotes: 0
Views: 2157
Reputation: 72319
Oh, I got this.
This code:
s_idRotationZinverse.col(0) << s_yAxis;
isn't a declaration; it's a statement that has to be inside a function body.
You're probably trying to execute it outside of any function, which is syntactically incorrect and causes the error you mentioned.
You might have been tricked by the Eigen documentation, which calls this syntax "comma initialization" where it should be "comma assignment" or so. Initialization is when you give the variable a value when it's defined, not as a separate step. Initialization is syntactically a part of the declaration, so it can be done outside of function bodies.
I suggest to fork Eigen to support the new std::initializer_list
-based initialization (if it's not done yet) and submit a pull request.
Upvotes: 1