Если у меня есть класс вроде этого:Вызов конструктора из другого класса
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
«s m_Data
» s quad
в bar
это, кажется, неинициализированными, даже если он имеет значение в numbers[4]
. : \
В частности, это происходит сбой:
m_Data.quad = _mm_mul_ps(m_Data.quad, a_Other.m_Data.quad)
Любая помощь будет оценена. :)
На несвязанной ноте ваш трюк с профсоюзом, вероятно, повредит работе. Вы представляете много потенциальных псевдонимов, которые компилятор должен учитывать и работать, прямо в середине вашего (предположительно критически важного) SIMD-кода. – jalf
Вам нужно будет опубликовать более полный пример. Вы говорите, что квадрат bar m_Data в баре кажется неинициализированным, хотя он имеет значения в числах [4] «код, который вы выложили, никогда не устанавливает его. –