我有一个看起来像这样的结构:
typedef struct {
int a;
//other fields
string s1;
string s2;
} strMyStruct;
在下面的代码中,append() 方法将崩溃,因为字符串对象 x1.s1
没有 build 。
strMyStruct x1;
memset(&x1, 0, sizeof(x1));
x1.a = 100
x1.s1.append("....");
我可以像new (x1.s1) string;
那样做新的布局来解决它, 但它太麻烦了,我无法完全控制 strMyStruct
的结构:有人可能会添加另一个字符串作为这个结构的字段并开始使用它并遇到崩溃问题,直到他记得做放置新技巧。
真的希望字符串类在memset(&x1, 0, sizeof(x1));
完成初始化时能够正确处理它.这有什么技巧吗?
最佳答案
您可以使用统一初始化来默认构造对象。
strMyStruct x1{};
这将默认初始化该对象的成员。按照您编写的方式,变量已声明但未初始化。您还可以使用此语法对结构进行值初始化。
strMyStruct x2{5, "foo", "bar"};
关于c++ - 在结构中初始化一个字符串对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403870/