【发布时间】:2015-01-11 20:30:14
【问题描述】:
我的函数签名如下:
void analyze(Image * x, std::array<bool, 4> smooth);
如果用户没有在调用中明确设置它,我想要给这个数组平滑一个默认值。所以我尝试了类似的方法:
std::array<bool, 4> smooth = std::array<bool, 4>
({true, true, true, false}));
void analyze(Image * x, std::array<bool, 4> smooth = std::array<bool, 4>(({true, true, true, false})));
无论我尝试什么,我都无法编译它。上面的例子说“错误:预期的表达式”。
【问题讨论】:
-
第一个版本运行良好:goo.gl/47WCPj。您使用的是较旧的编译器吗?
-
去掉括号。
-
不是 stl 数组。它是
std::array。 STL 没有array类模板。 -
@Luca +1 提问,但请记住 STL 不是标准 C++ 库; (我有时也说错了,因为很多人都有)。请注意,在您的示例中,较短的案例可以更具可读性并且适合没有滚动条的单行。总是试着问最小的问题。如果一个 2 元素数组用于说明这一点,为什么要使用 4 个元素?如果
int可以代替bool来表达观点,那么整数1和2比true、false更简洁。