Ошибка доступа к переменным поля 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);
}
→ Ссылка