Appel du constructeur d'une autre classe
-
06-07-2019 - |
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 ??code>,
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. :)
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?