Eigen ::地图未命名?

时间:2018-06-10 03:20:56

标签: c++ c++11 c++14 c++17 eigen

在这里,我尝试使用a函数将随机值写入Eigen

double *a = (double*)malloc(N*N*sizeof(double));

Map<Matrix<double, N, N, RowMajor> >m(a);
m = MatrixXd::Random(N,N);

是否可以在一行中完成最后一部分(不创建m)?我想象的是

Map<Matrix<double, N, N, RowMajor> >(a) = MatrixXd::Random(N,N);

但得到了

main.cpp:44:42: error: redefinition of 'a' with a different type: 'Map<Matrix<double, N, N, RowMajor> >' vs 'double *'
    Map<Matrix<double, N, N, RowMajor> >(a) = MatrixXd::Random(N,N);
                                         ^
main.cpp:42:13: note: previous definition is here
    double *a = (double*)malloc(N*N*sizeof(double));
            ^
1 error generated.

1 个答案:

答案 0 :(得分:1)

C ++将忽略

等结构中()周围的a
Type (a) = expr;

你可以写

( Type(a) ) = expr;

或使用C ++ 11:

Type{a} = expr;

对于这种情况,您还可以使用静态Map成员函数:

Matrix<double, N, N, RowMajor>::Map(a) = MatrixXd::Random(N,N);

Matrix<double, N, N, RowMajor>::Map(a).setRandom(); // size is specified by type