Domanda

Se ho una lezione come questa:

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

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

    Data m_Data;
};

e una classe come questa:

class bar
{
public:

   bar() : m_Data() {}

   foo m_Data;
}

viene chiamato il costruttore di foo quando si crea un'istanza di bar?

Perché quando provo ad usare la barra m_Data quad nella barra sembra essere non inizializzato, anche se ha valori in numeri [4] . : \

In particolare, questo si blocca:

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

Qualsiasi aiuto sarebbe apprezzato. :)

È stato utile?

Soluzione

Devi dichiarare il tuo costruttore come public , altrimenti non stai permettendo a nessuno di creare un'istanza della tua classe se la dichiari membro private .

Altri suggerimenti

Sembra buono per me. foo e bar sono tipi non POD perché hanno un costruttore, quindi i loro membri sono garantiti per essere inizializzati dopo la costruzione.

Forse i dati vengono sovrascritti in seguito attraverso una perdita di memoria?

Come si crea l'istanza di bar?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top