【发布时间】:2015-11-19 15:47:05
【问题描述】:
当我有一个结构定义时在 C++ 中
struct foo
{
...
};
struct bar
{
foo FooData[10];
...
};
我想写一个函数
void Baz(bar *Bar)
{
Bar->FooData = {};
}
我收到一个错误(Visual Studio Community 2013 中的 C3079)“初始化列表不能用作此赋值运算符的右操作数。”
然而,这种语法在类似的情况下似乎可以正常工作
int Array[10];
Array = {};
...
为什么前面的例子编译失败?
【问题讨论】:
-
数组不可赋值。另外,请只标记一种语言。
-
我会添加你的最后一个示例不应该编译,并且不使用 clang 3.5 编译;责怪视觉工作室不够严格。
-
@paulsm4 或
*bar = Bar{}。取决于语言。 -
鉴于它被标记为
c++,我更喜欢std::fill而不是memset。
标签: c++ arrays initializer