【发布时间】:2012-08-28 15:45:31
【问题描述】:
我的问题:当一个结构有 c-tor 时,为什么我不能静态初始化它?
我的编译器声称:
type `myStruct' must be initialized by constructor, not by `{...}'
这是为什么呢?我正在使用 gcc 3.4.4 版(cygming 特殊,gdc 0.12,使用 dmd 0.125)
为了说明,这里是被编译器拒绝的struct。
struct myStruct
{
int a;
double b;
myStruct() { a= 0; b = 0.0; }
}
void main()
{
myStruct ms = {7, 7.7}; // Now this compiler does not accept.
}
【问题讨论】:
-
示例代码需要花费数小时才能格式化,直到它被接受!它声称我没有正确缩进 4 个空格的代码。我愿意。我可以数到 4。 struct myStruct { int a;双乙; // 现在我在这里添加一个默认的 c-tor myStruct() { a= 0; b = 0.0; } } void main() { myStruct ms = {7, 7.7}; // 现在这个编译器不接受。 }
-
@Peter 无需手动操作。将代码粘贴到编辑器中,选择它,点击按钮(用于 Ctrl-K)。
-
我想你在谈论数组初始化语法?因为你只能通过这种方式初始化 POD 类型...
-
你认为你需要查看什么代码,@Robert?没有任何代码,这个问题对我来说似乎很清楚。
-
@RobKennedy Peter 问他为什么会遇到特定错误,但我假设他也想要一个能够产生他想要的效果的解决方案。对于前者,代码无济于事。对于后者,代码是必要的。
标签: c++ static constructor initialization structure