C ++ Как создать абстрактный конструктор родительского класса из дочернего класса - PullRequest
0 голосов
/ 15 марта 2020

У меня есть абстрактный класс, который имеет две переменные. Я хочу создать эти переменные через конструктор.

Затем я хочу создать эти переменные из конструкторов дочерних классов, но это дает мне ошибку приведения?

#ifndef Employee_Interface_H
#define Employee_Interface_H
#include <iostream>
using namespace std;

class Employee {

private: 
    double salary = 0;
    double sales = 0;
    double bonus = 0;

public:

    Employee(double empSalary, double empSales) {
        salary = empSalary;
        sales = empSales;
    }

    void virtual calculateBonus() = 0;


};

class Staff : public Employee {

public:

    Staff(double empSalary, double empSales) {
        Employee(empSalary,empSales);
    }

    void calculateBonus() {
        //20% of salary
    }


};




#endif

`

1 Ответ

3 голосов
/ 15 марта 2020

Вместо этого:

Staff(double empSalary, double empSales) {
    Employee(empSalary,empSales);
}

Используйте это вместо:

Staff(double empSalary, double empSales) : 
    Employee(empSalary, empSales)
{
}

Вы должны поместить вызов конструктора базового класса в конструктор производного класса member-initialization- list - после маркера :, но до определения тела конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...