Pergunta

Se eu tiver uma classe como este:

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

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

    Data m_Data;
};

e uma classe como este:

class bar
{
public:

   bar() : m_Data() {}

   foo m_Data;
}

é o construtor de foo chamado ao fazer uma instância de bar?

Porque quando eu tento bar de m_Data uso de quad em bar parece ser inicializado, mesmo que tenha valores em numbers[4]. : \

Especificamente, este crashes:

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

Qualquer ajuda seria apreciada. :)

Foi útil?

Solução

Você tem que declarar seu construtor a ser public, caso contrário, você não está permitindo que qualquer pessoa para instanciar a classe se você declará-lo como membro private.

Outras dicas

Parece bom para mim. foo e bar são tipos não-pod, porque eles têm um construtor, para que seus membros são garantidos para ser inicializado depois de construir.

Talvez os dados será substituído mais tarde através de um vazamento de memória?

Como você cria a instância do bar?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top