Вызов конструктора из другого класса - PullRequest
0 голосов
/ 12 сентября 2009

Если у меня есть такой класс:

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 m_Data * quad в bar, он кажется неинициализированным, даже если он имеет значения в numbers[4]. : \

В частности, это происходит сбой:

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

Любая помощь будет оценена. :)

Ответы [ 2 ]

2 голосов
/ 12 сентября 2009

Вы должны объявить ваш конструктор как public, иначе вы не позволите никому создавать экземпляр вашего класса, если вы объявите его как private член.

1 голос
/ 12 сентября 2009

выглядит хорошо для меня. foo и bar не являются POD-типами, потому что у них есть конструктор, поэтому их члены гарантированно инициализируются после конструирования.

Может быть, данные перезаписываются позже из-за утечки памяти?

Как создать экземпляр бара?

...