Saya mendapatkan pesan kesalahan ini dengan kode di bawah ini:
class Money {
public:
Money(float amount, int moneyType);
string asString(bool shortVersion=true);
private:
float amount;
int moneyType;
};
Pertama saya berpikir bahwa parameter default tidak diperbolehkan sebagai parameter pertama di C ++ tetapi diperbolehkan.
Jawaban:
Anda mungkin mendefinisikan ulang parameter default dalam implementasi fungsi. Ini hanya harus didefinisikan dalam deklarasi fungsi.
sumber
bool shortVersion
parameter, cukup hapus atau komentari= true
std::string Money::asString(bool)
. Perhatikan bahwa itu bahkan tidak menyertakan nama parameter. Dan, memang, Anda bisa menggunakan nama yang berbeda di deklarasi daripada di definisi. (Ini penting dalam proyek besar ketika - untuk alasan apa pun - Anda ingin mengubah nama dalam definisi, tetapi tidak ingin mengkompilasi ulang jutaan baris kode yang bergantung pada deklarasi.)