Chamar o construtor de outra classe
-
06-07-2019 - |
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. :)
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?