Chiamare il costruttore da un'altra classe
-
06-07-2019 - |
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. :)
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?