Question

Si j'ai une classe comme celle-ci:

typedef union { __m128 quad; float numbers[4]; } Data

class foo
{
public:
    foo() : m_Data() {}

    Data m_Data;
};

et une classe comme celle-ci:

class bar
{
public:

   bar() : m_Data() {}

   foo m_Data;
}

le constructeur de foo est-il appelé lors de la création d'une instance de bar?

Parce que lorsque j'essaie d'utiliser bar , le m_Data , quad dans bar , il semble être non initialisé, même s'il a des valeurs dans nombres [4] . : \

Plus précisément, cela bloque:

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

Toute aide serait appréciée. :)

Était-ce utile?

La solution

Vous devez déclarer votre constructeur comme public , sinon vous ne permettrez à personne d'instancier votre classe si vous la déclarez en tant que membre private .

Autres conseils

Ça me va. foo et bar sont des types non-POD car ils ont un constructeur. Ainsi, leurs membres sont assurés d'être initialisés après la construction.

Peut-être que les données sont écrasées plus tard par une fuite de mémoire?

Comment créez-vous l'instance de bar?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top