小编Cat*_*ree的帖子

Eigen EIGEN_MAKE_ALIGNED_OPERATOR_NEW 的传递效果?

最近,我意识到的潜在问题内存对齐固定大小的矢量化的本征对象

文档所述的正确代码:

class Foo
{
  ...
  Eigen::Vector2d v;
  ...
public:
  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};
 
...
 
Foo *foo = new Foo;
Run Code Online (Sandbox Code Playgroud)

我想知道这个代码是否可以?

class Foo2
{
  ...
  Foo foo;
  ...
};
 
...
 
Foo2 *foo = new Foo2; //?
Run Code Online (Sandbox Code Playgroud)

还是应该EIGEN_MAKE_ALIGNED_OPERATOR_NEWFoo2类中再次添加?这就是建议在这里我想:

如果我们添加 EIGEN_MAKE_ALIGNED_OPERATOR_NEW,这只能解决 Cartographer 库本身的问题。该库的用户还必须将 EIGEN_MAKE_ALIGNED_OPERATOR_NEW 添加到包含矢量化 Cartographer 类的类中。这听起来像是一场维护噩梦。

我没有新运算符重载的经验。我认为这个问题更笼统,并且以某种方式与 new 运算符在 C++ 中的工作方式有关。例如,重载的 new 运算符 inFoo是否被默认的 new 运算符 in 调用Foo2?继承呢?如果Foo2从继承Foo,要我们把同样EIGEN_MAKE_ALIGNED_OPERATOR_NEWFoo2? …

c++ memory-alignment new-operator eigen

6
推荐指数
1
解决办法
474
查看次数

标签 统计

c++ ×1

eigen ×1

memory-alignment ×1

new-operator ×1