Erro do compilador C2548
“class::member”: parâmetro padrão ausente para parâmetro de parâmetro
A lista de parâmetros padrão não tem um parâmetro. Se você fornecer um parâmetro padrão em qualquer lugar em uma lista de parâmetros, deverá definir parâmetros padrão para todos os parâmetros subsequentes na declaração atual ou em quaisquer declarações anteriores dentro do mesmo escopo.
Exemplo
O exemplo a seguir gera C2548 para:
func1
porque está faltando o argumentob
padrão .func3
porque está faltando o argumentoc
padrão .
O exemplo a seguir não gera C2548 para:
func2
porque todos os argumentos padrão necessários são fornecidos.- A segunda
func4
declaração porque o argumentoc
padrão é fornecido na declaração anterior e está no mesmo escopo. - A terceira
func4
declaração porque ambos os argumentosb
padrão sãoc
fornecidos anteriormente.
// 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