В вашем конструкторе harvardLawyer
вы пытаетесь вызвать конструктор lawyer(int, double, int, string)
. Однако ваш класс lawyer
имеет только конструктор lawyer()
. Вы пытаетесь вызвать функцию, которая не существует.
Чтобы исправить вашу непосредственную проблему, вы должны изменить конструктор lawyer
так, чтобы он принимал все параметры, которые вы пытаетесь передать в него. Вы по-прежнему можете указывать параметры по умолчанию - это позволяет вам вызывать ваш конструктор с нулевым, одним, двумя, тремя или четырьмя параметрами (в указанном порядке). Ваш выбор.
class lawyer : public employee {
public:
lawyer(int hours = 80,
double salary = 30000.0,
int days = 15,
string tag = "pink") : employee(hours, salary, days, tag) {}
string sue() { return "I'll see you in court!"; }
};
class harvardLawyer : public lawyer {
public:
harvardLawyer() : lawyer(80, 36000.0, 18, "pink pink pink pink") {}
};
Однако не совсем понятно, зачем вам вообще нужен класс harvardLawyer
. Если вы хотите harvardLawyer
, просто создайте lawyer
и передайте соответствующие параметры. Предполагая, что harvardLaywer
больше не является классом:
int main(int argc, char** argv)
{
lawyer regular_lawyer = lawyer();
lawyer harvard_lawyer = lawyer(80, 36000.0, 18, "pink pink pink pink");
std::cout << harvard_lawyer.sue() << "\n";
}