Llamar a constructor desde otra clase
-
06-07-2019 - |
Pregunta
Si tengo una clase como esta:
typedef union { __m128 quad; float numbers[4]; } Data
class foo
{
public:
foo() : m_Data() {}
Data m_Data;
};
y una clase como esta:
class bar
{
public:
bar() : m_Data() {}
foo m_Data;
}
¿se llama al constructor de foo al hacer una instancia de bar?
Porque cuando trato de usar bar
's m_Data
' quad
en bar
parece ser no inicializado, aunque tiene valores en números [4]
. : \
Específicamente, esto se bloquea:
m_Data.quad = _mm_mul_ps(m_Data.quad, a_Other.m_Data.quad)
Cualquier ayuda sería apreciada. :)
Solución
Debe declarar que su constructor es public
, de lo contrario no permitirá que nadie cree una instancia de su clase si la declara como miembro private
.
Otros consejos
Se ve bien para mí. foo y bar son tipos que no son POD porque tienen un constructor, por lo que se garantiza que sus miembros se inicializarán después de la construcción.
¿Quizás los datos se sobrescriban más tarde a través de una pérdida de memoria?
¿Cómo se crea la instancia de bar?