質問
次のようなクラスがある場合:
typedef union { __m128 quad; float numbers[4]; } Data
class foo
{
public:
foo() : m_Data() {}
Data m_Data;
};
およびこのようなクラス:
class bar
{
public:
bar() : m_Data() {}
foo m_Data;
}
barのインスタンスを作成するときにfooのコンストラクターが呼び出されますか?
bar
の m_Data
の quad
を bar
で使用しようとすると、 numbers [4]
に値があるにもかかわらず、初期化されていません。 :\
具体的には、これはクラッシュします:
m_Data.quad = _mm_mul_ps(m_Data.quad, a_Other.m_Data.quad)
ご協力いただければ幸いです。 :)
解決
コンストラクターを public
として宣言する必要があります。そうしないと、 private
メンバーとして宣言した場合、クラスのインスタンス化を誰にも許可しません。
他のヒント
よさそうだ。 fooとbarはコンストラクターを持つため非POD型であり、そのメンバーは構築後に初期化されることが保証されています。
データは後でメモリリークによって上書きされる可能性がありますか?
barのインスタンスをどのように作成しますか?
所属していません StackOverflow