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. :)

¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top