在结构体中初始化字符串对象

小包

我有一个看起来像这样的结构:

typedef struct {
    int a;
    //other fields
    string s1;
    string s2;
} strMyStruct;

在以下代码中,因为x1.s1未构造字符串对象,所以append()方法将崩溃

strMyStruct x1;
memset(&x1, 0, sizeof(x1));
x1.a = 100
x1.s1.append("....");

我可以像这样进行新的放置来解决它new (x1.s1) string;,但是它太麻烦了,而且我对的结构没有完全的控制权strMyStruct:有人可能会在此结构中添加另一个字符串作为字段并开始使用它并遇到崩溃问题,直到他记得做新的招数。

真正希望当通过完成初始化时,字符串类可以正确处理它memset(&x1, 0, sizeof(x1));这有招吗?

科里·克莱默(Cory Kramer)

您可以使用统一初始化来默认构造对象。

strMyStruct x1{};

这将默认初始化该对象的成员。编写方式中,变量已声明但未初始化。您还可以使用此语法来值值初始化您的结构。

strMyStruct x2{5, "foo", "bar"};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章