質問

次のようなクラスがある場合:

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のインスタンスをどのように作成しますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top