Подпись конструктора не совпадает.Это будет соответствовать:
BankAccount(const char *nm, const char *nr, double s);
РЕДАКТИРОВАТЬ:
Причина заключается в том, как вы вызываете конструктор в главной функции.Вы даете буквальные строки в качестве параметров.Эти литералы являются постоянными, вы не можете изменить их во время выполнения.Таким образом, вы будете передавать указатели на const char*
.
Это очень очевидно, если вы посмотрите на этот противоположный пример.Это способ, который будет совместим со старой подписью BankAccout(char *nm, char *nr, double s);
.
int main(int argc, char* argv[])
{
char name[] = "hello";
char number[] = "1234";
std::cout << "name before: " << name << std::endl;
BankAccount k(name, number, 8.5);
// name and number are not const,
// you can change them :
name[2] = 'x';
name[3] = 'x';
std::cout << "name after: " << name << std::endl;
return 0;
}