Recibo este mensaje de error con el siguiente código:
class Money {
public:
Money(float amount, int moneyType);
string asString(bool shortVersion=true);
private:
float amount;
int moneyType;
};
Primero pensé que los parámetros predeterminados no están permitidos como primer parámetro en C ++ pero está permitido.
Respuestas:
Probablemente esté redefiniendo el parámetro predeterminado en la implementación de la función. Solo debe definirse en la declaración de función.
fuente
bool shortVersion
parámetro, simplemente elimine o comente el= true
std::string Money::asString(bool)
. Tenga en cuenta que ni siquiera incluye el nombre del parámetro. Y, de hecho, puede usar nombres diferentes en la declaración que en la definición. (Esto es importante en un gran proyecto cuando, por cualquier motivo, desea cambiar el nombre en la definición, pero no desea volver a compilar millones de líneas de código que dependen de la declaración)