eigen3:放置映射到常量值的新语法
eigen3: placement new syntax for Map to a const value
大家好:我对 Eigen3 和新的放置语法有点困惑,因为这段代码有效:
double ptr1[9]={1,2,3,4,5,6,7,8,9};
const double ptr2[9]={1,2,3,4,5,6,7,8,9};
Map<Matrix<double,3,3> > mUseless(ptr1);
new (&mUseless) Map<const Matrix<double,3,3> > (ptr2);
mUseless(1,1)=6.0;
如果 mUseless 现在指向一个 const double,为什么这段代码有效?
调用 placement new 不会改变对象的类型,并且由于 mUseless
不是 Map<const ...>
,所以您可以更改引用值的内容是完全正常的。
实际上,您的代码类似于从 Map<const Matrix<double,3,3> >
到 Map<Matrix<double,3,3> >
的 reinterpret_cast
。
大家好:我对 Eigen3 和新的放置语法有点困惑,因为这段代码有效:
double ptr1[9]={1,2,3,4,5,6,7,8,9};
const double ptr2[9]={1,2,3,4,5,6,7,8,9};
Map<Matrix<double,3,3> > mUseless(ptr1);
new (&mUseless) Map<const Matrix<double,3,3> > (ptr2);
mUseless(1,1)=6.0;
如果 mUseless 现在指向一个 const double,为什么这段代码有效?
调用 placement new 不会改变对象的类型,并且由于 mUseless
不是 Map<const ...>
,所以您可以更改引用值的内容是完全正常的。
实际上,您的代码类似于从 Map<const Matrix<double,3,3> >
到 Map<Matrix<double,3,3> >
的 reinterpret_cast
。