Вызов конструктора из другого класса
-
06-07-2019 - |
Вопрос
Если у меня есть такой класс, как этот:
typedef union { __m128 quad; float numbers[4]; } Data
class foo
{
public:
foo() : m_Data() {}
Data m_Data;
};
и такой класс, как этот:
class bar
{
public:
bar() : m_Data() {}
foo m_Data;
}
вызывается ли конструктор foo при создании экземпляра bar?
Потому что, когда я пытаюсь использовать bar
's m_Data
's quad
в bar
он кажется неинициализированным, даже несмотря на то, что у него есть значения в numbers[4]
. :\
В частности, это приводит к сбою:
m_Data.quad = _mm_mul_ps(m_Data.quad, a_Other.m_Data.quad)
Будем признательны за любую помощь.:)
Решение
Вы должны объявить, что ваш конструктор должен быть public
, в противном случае вы никому не разрешаете создавать экземпляр вашего класса , если вы объявляете его как private
Участник.
Другие советы
По-моему, выглядит неплохо.foo и bar не являются типами POD, потому что у них есть конструктор, поэтому их члены гарантированно будут инициализированы после построения.
Может быть, данные позже будут перезаписаны из-за утечки памяти?
Как вы создаете экземпляр bar?