编译器错误 C2548
“class::member”:缺少参数的默认参数
默认参数列表缺少参数。 如果你在参数列表中的任何位置提供默认参数,则必须为当前声明中的所有后续参数或同一作用域内任何以前的声明定义默认参数。
示例
对于以下项,以下示例会生成 C2548:
func1
,因为它缺少默认参数b
。func3
,因为它缺少默认参数c
。
对于以下项,以下代码不会生成 C2548:
func2
,因为所有必需的默认参数都已提供。- 第二个
func4
声明,因为在前面的声明中提供了默认参数c
,并且该参数位于同一作用域内。 - 第三个
func4
声明,因为前面已提供了默认参数b
和c
。
// C2548.cpp
// compile with: /c
void func1(int a = 1, int b, int c = 3); // C2548
void func2(int a = 1, int b = 2, int c = 3); // OK
void func3(int a, int b = 2, int c); // C2548
void func4(int a, int b, int c = 3); // OK
void func4(int a, int b = 2, int c); // OK
void func4(int a = 1, int b, int c); // OK