Re: friend
От: MNZ Россия  
Дата: 18.11.25 08:52
Оценка: 19 (5)
Здравствуйте, Hоmunculus, Вы писали:

H>Как считаете — friend это костыль для кривой архитектуры или норм?


В прямых руках норм. В конце-концов, при помощи friend можно не только наивно открыть доступ ко всем своим потрохам. Например, для friend придумали что-то вроде инверсии зависимости в виде паттерна Passkey, при помощи которого можно разрешать вызывать одну конкретную функцию классам из белого списка. Что-то вроде:
class Me {
public:
    struct Passkey {
        friend class Class1;
        friend class Class2;
    private:
        Passkey() = default; // Доступен только друзьям
    };

    void SomeFunc(Passkey);
};

class Class1 {
public:
    void CallMe() {
        Me me;
        me.SomeFunc(Me::Passkey{});
    }
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.