Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Полиморфизм

6.6K
19 октября 2007 года
Mendler
48 / / 20.09.2006
Код:
class TableStatic // методы для добавления, удаления и сортировки массивов
{
   ...
   void swap( TRecord *, TRecord * );
}

class TableDynamic // методы для добавления, удаления и сортировки односвязных списков
{
   ...
   void swap( TRecord *, TRecord * );
}


Как написать класс, в котором будет описан метод Sorty, сортирующий методом пузырька с помощью функции swap описаной в классах?
1.9K
19 октября 2007 года
max_dark
256 / / 11.11.2005
Я бы поступил следующим образом:
создаем родительский класс для TableStatic и TableDinamic с виртуальным методом swap
В сортирующем классе параметром у метода Sorty ставим указатель на объект родительского класса
Код:
class AbstractTable {
    /* ... */
    public:
        virtual void swap(TRecord* a,TRecord* b)=0;
};
class TableStatic:public virtual AbstractTable
// методы для добавления, удаления и сортировки массивов
{
    /* ... */
    public:
        void swap( TRecord *, TRecord * );
};

class TableDynamic:public virtual AbstractTable
// методы для добавления, удаления и сортировки односвязных списков
{
    /* ... */
    public:
        void swap( TRecord *, TRecord * );
};

class Sorter // класс сортировщика
{
    /* ... */
    public:
        void Sorty(AbstractTable* tbl);
};
Sorter s;
TableStatic tbl;
/*...*/
s.Sorty(&tbl);

Можно также встроить этот метод в класс AbstractTable:
 
Код:
class AbstractTable {
    /* ... */
    protected:
        virtual void swap(TRecord* a,TRecord* b)=0;
    public:
        void Sorty();
};

Тогда сортировку можно будет проводить средствами самих таблиц
 
Код:
TableDynamic tbl;
/* ... */
tbl.Sorty();
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог