Ошибка доступа к переменным поля protected
Помогите, пожалуйста, решить данную проблему! В программе есть класс employee с полем protected. В функции zarplata я пытаюсь изменить данные переменных этого поля через указатель (объект класса employee, на который указывает указатель k, был создан заранее), но программа выдаёт ошибку доступа к полю. См. код ниже.
class employee//сотрудник
{
protected:
string name;
string surname;
string patronymic;
double salary = 0;
};
void zarplata(employees *k)
{
if (k->position == "Бухгалтер") k->j.salary = standart * stavka_accountant;
if (k->position == "Секретарь") k->j.salary = standart * stavka_secretary;
if (k->position == "Сисадмин") k->j.salary = standart * stavka_administrator;
if (k->position == "Директор") k->j.salary = standart * stavka_director;
return;
}
Заранее спасибо!
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
А если вам использовать друзей?
class employee//сотрудник
{
protected:
double salary = 0;
friend void zarplata(employee* k);
};
void zarplata(employee* k)
{
k->salary = 20;
}
int main() {
employee x;
zarplata(&x);
}