错误:不允许对类型 "const MyClass" 的对象使用 '{...}' 进行初始化

Error: initialization with '{...}' is not allowed for object of type "const MyClass"

本文关键字:初始化 对象 不允许 类型 const 错误 MyClass      更新时间:2023-10-16

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

class MyClass
{
public:
   MyClass();
   __m128 SIMD;
};

我看到在微软的DirectXMath SIMD数学库中,他们可以做一些事情,比如:

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

其中XMVECTOR只是围绕着这样的东西:

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

我也尝试过使用带有数组的并集,但它仍然会给我同样的错误。

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

struct MyClass
{
   __m128 SIMD;
};

请阅读聚合初始化,它解释了什么是聚合以及初始化是如何工作的。