错误:对于“const MyClass”类型的对象,不允许使用“{...}”进行初始化

时间:2013-06-29 21:54:40

标签: c++ initialization simd

基本上我有一个SIMD结构的包装器,如下所示:

class MyClass
{
public:
   MyClass();

   __m128 SIMD;
};

我在Microsoft的DirectXMath SIMD数学库中看到它们可以执行以下操作:

const XMVECTOR SinCoefficients0    = {-0.16666667f, +0.0083333310f, -0.00019840874f, +2.7525562e-06f};

其中 XMVECTOR 只是包围这样的内容:

union
{
  float f[4];
  __m128 entry;
};

我也尝试使用带数组的联合,但它仍然给我同样的错误。

1 个答案:

答案 0 :(得分:3)

为了能够使用聚合初始化,您需要删除用户定义的ctor并确保所有成员都是公共的:

struct MyClass
{
   __m128 SIMD;
};

请阅读aggregate initialization,其中说明了聚合的内容以及初始化的工作原理。