发布于 2022-04-18 03:56:20
没有办法。就像你提到的这篇课文
聚合是一个数组或一个类(第9条),没有用户提供的构造函数(12.1),没有私有或受保护的非静态数据成员(第11条),没有基类(第10条),也没有虚拟函数(10.3)。
这意味着类/结构或数组具有
是一个集合。并且只有聚合可以进行大括号初始化。因此,在这种情况下,您的结构有一个虚拟函数,它违反了上面的一条定律,使它成为一个非聚合的函数。
我不知道为什么会这样。
我猜如果您的结构与c中的结构相似,那么您的结构就能工作。
因此,就像Hassan的回答一样,您应该使用参数化构造函数。
发布于 2021-06-24 08:37:57
为什么不使用带virtual void foo() {}的参数化构造函数
struct A
{
int a;
int b;
A(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void foo() {}
};
A a{ 1, 2 }; https://stackoverflow.com/questions/68112155
复制相似问题