Вы объявляете параметры как lvalue-ссылку на non-const, которая не может быть привязана к r-значениям, таким как 40
(который является литералом int
), "August 11, 1980"
и "John Doe"
(которые являются строкой литералы и будут преобразованы в std::string
неявно как временные значения, которые являются rvalues).
Вы можете сделать их lvalue ссылкой на const (как для объявления, так и для определения), например,
Patient(const int &years, const std::string &birthdate, const std::string &aliase);
// ^^^^^ ^^^^^ ^^^^^
Или для int
просто сделайте передачу по значению.
Patient(int years, const std::string &birthdate, const std::string &aliase);
// ^^^ ^^^^^ ^^^^^
LIVE