Информация об изменениях

Сообщение Re[2]: Private - это всем кроме меня было известно? от 17.12.2022 18:59

Изменено 17.12.2022 19:00 Максим

Re[2]: Private - это всем кроме меня было известно?
W>я читал в какой-то книжке что не рекомендуется менять доступность при наследовании, типа это плохо

Наверно не очень ясно написал. Вот пример:

struct Widget {
    virtual ~Widget() = default;
};

struct Text : virtual Widget {
    void set_text() { do_set_text(); }
private:
    virtual void do_set_text() = 0;
};

struct Colorful : virtual Widget {
    void set_color() { do_set_color(); }
private:
    virtual void do_set_color() = 0;
};

struct Placard : Colorful, Text {
private:
    void do_set_text() override { puts("P::DST"); }
    void do_set_color() override { puts("P::DSC"); }
};

struct Billboard : Text, Colorful {
private:
    void do_set_text() override { puts("B::DST"); }
    void do_set_color() override { puts("B::DSC"); }
};


https://quuxplusone.github.io/blog/2022/12/01/chimeric-ptr/
Re[2]: Private - это всем кроме меня было известно?
W>я читал в какой-то книжке что не рекомендуется менять доступность при наследовании, типа это плохо

Наверно не очень ясно написал. Вот пример:

struct Widget {
    virtual ~Widget() = default;
};

struct Text : virtual Widget {
    void set_text() { do_set_text(); }
private:
    virtual void do_set_text() = 0;
};

struct Colorful : virtual Widget {
    void set_color() { do_set_color(); }
private:
    virtual void do_set_color() = 0;
};

struct Placard : Colorful, Text {
private:
    void do_set_text() override { puts("P::DST"); }
    void do_set_color() override { puts("P::DSC"); }
};

struct Billboard : Text, Colorful {
private:
    void do_set_text() override { puts("B::DST"); }
    void do_set_color() override { puts("B::DSC"); }
};


https://quuxplusone.github.io/blog/2022/12/01/chimeric-ptr/