我在班上的构造函数中收到警告,我以前从未见过它。这就是我的构造函数的样子。
Account(std::string n = "NULL", std::string i = "0", Stats s = (0,0,1) )
: name(n), id(i), stat(s) {}
如果删除任何这些逗号,会导致编译错误,不是吗? 这个警告是不正确的,还是有什么我可以改变来解决它?
答案 0 :(得分:3)
问题是:(0,0,1)
。
这是表达式0,0,1
周围的括号,其值为1
。 (逗号运算符是一个中缀运算符,它计算第一个和第二个表达式并返回第二个表达式。在这种情况下,你有两个这样的运算符。)
我不知道你想要什么,但我猜这不是它。
编辑:您似乎想要Stats s(0,0,1)
。
答案 1 :(得分:3)
问题最有可能发生在Stats s = (0,0,1)
部分。 C ++将此视为要计算的表达式序列,同时仅保留最后一个值。它返回1.你可能意味着
Stats s = Stats(0,0,1)
如果你的统计结构有这样的构造函数,那么它是有效的。请注意,在C ++ 11中,您使用了更短的语法:
Stats s = {0,0,1}
答案 2 :(得分:0)
我认为你要找的是为函数参数赋予一个默认值,这是一个结构,我认为这里讨论了How can I assign a default value to a structure in a C++ function?