结构体大括号初始化原理是什么,为什么我加了一个构造函数后就无法用大括号来初始化了

structClassBook{intnumber;intage;ClassBook(){memset(this,0,sizeof(ClassBook));}};intm... struct ClassBook{
int number;
int age;
ClassBook()
{
memset(this,0,sizeof(ClassBook));
}

};
int main()
{
ClassBook bookst={1001,10};
cout<<bookst.number<<"\t"<<bookst.age<<endl;
return 0;
};
编译会报错: error C2552: “bookst”: 不能用初始值设定项列表初始化非聚合
展开
 我来答
匿名用户
2014-09-29
展开全部
添加了构造函数的struct相当于成员全部public的类。而类的实例化必须通过构造函数。
而这句赋值编译器理解为将初始化列表{1001,10}转换成ClassBook对象,所以出错。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式