2017-03-03 4 views
2

私はプログラムのためにEigenライブラリを使い、Eigen固定サイズのメンバを使用するクラス階層を持っています。 Eigenのドキュメントによると、これはクラスを16バイト整列させる必要があります。 Eigenはそれを行うためのマクロを提供していますが、私が継承しているので、この動作が基本クラスでのみ起こるかどうかは不明です。は、C++の継承クラスのパブリック部分のマクロを呼び出す必要があります

I.e.

class A{ 
    public : 
     EIGEN_MAKE_ALIGNED_OPERATOR_NEW 
     // member definitions 
}; 

マクロの使用を新しく指定する必要がありますか?

class B : public A{ 
    public: 
     EIGEN_MAKE_ALIGNED_OPERATOR_NEW 
     // definitions of B 
}; 

また、マクロをBの定義に入れておけば十分ですか? class Aによって定義されたoperator newBによって継承されているので

+0

関連:https://stackoverflow.com/questions/49075375/ – chtz

答えて

0

あなたの例では、EIGEN_MAKE_ALIGNED_OPERATOR_NEWマクロを使用する必要はありません。

一方、本当に傷つくこともなく、状況によっては、Eigenメンバー変数を整列させたすべてのクラスにマクロを配置するほうが安全かもしれません。

関連する問題