0

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

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、に値が含まれていても、初期化されていないように見えるためです。:\quadbarnumbers[4]

具体的には、これはクラッシュします:

m_Data.quad = _mm_mul_ps(m_Data.quad, a_Other.m_Data.quad)

どんな助けでも大歓迎です。:)

4

2 に答える 2

2

コンストラクターを であると宣言する必要があります。そうしないと、クラスをメンバーpublicとして宣言した場合、クラスをインスタンス化することはできません。private

于 2009-09-12T00:27:47.907 に答える
1

私には良さそうです。foo と bar はコンストラクターを持っているため非 POD 型であり、そのメンバーは構築後に初期化されることが保証されています。

たぶん、データはメモリリークによって後で上書きされますか?

バーのインスタンスをどのように作成しますか?

于 2009-09-12T00:34:42.510 に答える