题
如果我有这样的课程:
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;
}
是在创建bar实例时调用foo的构造函数吗?
因为当我尝试在 bar
中使用 bar
的 m_Data
的 quad
时,它似乎是未初始化,即使它在 numbers [4]
中有值。 :\
具体来说,这会崩溃:
m_Data.quad = _mm_mul_ps(m_Data.quad, a_Other.m_Data.quad)
任何帮助将不胜感激。 :)
解决方案
您必须将构造函数声明为 public
,否则如果您将其声明为 private
成员,则不允许任何人实例化您的类。
其他提示
对我来说很好。 foo和bar是非POD类型,因为它们有一个构造函数,所以它们的成员保证在构造之后被初始化。
以后可能会因内存泄漏而覆盖数据?
如何创建条形实例?
不隶属于 StackOverflow