【发布时间】:2020-05-25 19:00:28
【问题描述】:
我有一个包含许多相同类型成员的结构,就像这样
struct VariablePointers {
VariablePtr active;
VariablePtr wasactive;
VariablePtr filename;
};
问题是如果我忘记初始化结构成员之一(例如wasactive),像这样:
VariablePointers{activePtr, filename}
编译器不会抱怨它,但我会得到一个部分初始化的对象。我怎样才能防止这种错误?我可以添加一个构造函数,但它会重复两次变量列表,所以我必须输入三次!
如果有 C++11 的解决方案(目前我仅限于该版本),请添加 C++11 答案。不过,也欢迎更新的语言标准!
【问题讨论】:
-
键入构造函数听起来并不那么糟糕。除非你有太多的成员,在这种情况下,也许重构是合适的。
-
@Someprogrammerdude 我认为他的意思是错误是您可能不小心忽略了初始化值
-
@theWiseBro 如果您知道数组/向量如何帮助您,您应该发布答案。不是很明显,我没看到
-
@Someprogrammerdude 但它甚至是一个警告吗?用VS2019看不到。
-
有一个
-Wmissing-field-initializers编译标志。
标签: c++ aggregate-initialization