дизайн ООП

Тема в разделе "WASM.ZEN", создана пользователем alegordon, 7 янв 2006.

  1. alegordon

    alegordon New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2006
    Сообщения:
    20
    class A

    {

    public: virtual void f(void) { cout<<"A"<<endl; }

    };

    //--------------------------------------------------------

    class B: public A

    {

    private: virtual void f(void) { cout<<"B"<<endl; }

    };

    //--------------------------------------------------------int main(void)

    {

    A* a = new B;

    a->f(); // хотелось что-бы не вызывалось т.к. приват в В

    ((В*)а)->f(); // не компилится, т.к. приват в В

    // но если иерархия очень

    // большая, то трудно определить к чему

    // приводить.

    return 0;

    }

    //--------------------------------------------------------

    Консоль: В



    Есть такие ситуации при создании иерархии классов, когда во всей иерархии используется какой-нибудь метод или поле, а вот в одном классе его не надо использовать. Но при этом скрыть его использование никак нельзя. Кто знает какие-нибудь тонкости..?
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Что за ситуации такие? имхо это ошибка дизайна.
     
  3. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    переопредили его , чтобы выбрасывал исключение, или просто ничего не делал , да и всё .