我在班上的构造方警告,我以前从未见过。这就是我的构造函数的样子。
Account(std::string n = "NULL", std::string i = "0", Stats s = (0,0,1) )
: name(n), id(i), stat(s) {}
如果我删除任何这些逗号,则会导致编译错误,不是吗?该警告是不正确的,还是可以更改的东西来修复它?
问题是: (0,0,1)
。
是围绕0,0,1
的括号,该表达式评估为1
。(逗号运算符是评估第一个和第二个表达式并返回第二个表达式的Infix操作员。在这种情况下,您有两个这样的操作员。)
我不知道你在那里想要什么,但我猜不是。
编辑:看来您想要Stats s(0,0,1)
。
这个问题很可能在该部分Stats s = (0,0,1)
中。C 将其视为要计算的表达式序列,同时仅保留最后一个值。它返回1.您可能是指
Stats s = Stats(0,0,1)
如果您的统计结构具有这样的构造函数,则有效。请注意,在C 11中,您具有此较短的语法:
Stats s = {0,0,1}
我认为您正在寻找的是为function参数提供一个struct的默认值,我认为在这里讨论了如何将默认值分配给C 功能?