【发布时间】:2012-07-16 00:42:39
【问题描述】:
是否可以如下所示在 C++ 中初始化结构
struct address {
int street_no;
char *street_name;
char *city;
char *prov;
char *postal_code;
};
address temp_address =
{ .city = "Hamilton", .prov = "Ontario" };
链接here 和here 提到只能在C 中使用这种风格。如果是这样,为什么在C++ 中不可能?是否有任何潜在的技术原因导致它没有在 C++ 中实现,或者使用这种风格是不好的做法。我喜欢使用这种初始化方式,因为我的结构体很大,而且这种风格让我清楚地了解分配给哪个成员的值。
如果有其他方法可以实现相同的可读性,请与我分享。
在发布此问题之前,我已经参考了以下链接
【问题讨论】:
-
个人观点:在 C++ 中你不需要这种类型的对象初始化,因为你应该使用构造函数。
-
是的,我想到了,但我有一个大结构数组。使用这种方式对我来说既简单又易读。您是否有任何使用构造函数进行初始化的风格/良好做法,这也提供了更好的可读性。
-
与编程无关:此地址仅在美国可用。在法国,我们没有“省”,在世界其他地方,没有邮政编码,一个朋友的祖母住在一个小村庄,她的地址是“X女士,邮政编码”小村名”(是的,没有街道)。因此,请仔细考虑将其应用于市场的有效地址是什么;)
-
@MatthieuM。美国没有省份(这可能是加拿大的格式?),但有些州、地区,甚至是小村庄都懒得命名街道。所以地址一致性问题在这里也适用。
-
尚未有意将其排除在 c++11 之外。但是这个特性将在 c++20 中可用。 open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0329r0.pdf
标签: c++