Создание подкласса из суперкласса? - PullRequest
0 голосов
/ 05 ноября 2011

Я пытаюсь расширить этот класс

template <class T> class dynamic_array

Это не работает

class merge_sort : public dynamic_array

Как правильно продлить класс?

Ответы [ 2 ]

4 голосов
/ 05 ноября 2011

Вы должны предоставить аргумент для шаблона.Если вы хотите использовать фиксированный аргумент, скажем, int, то вы должны сделать:

class merge_sort : public dynamic_array< int >

Если вы хотите сохранить расширенный класс как общий, вы должны сделать:

template< class T >
class merge_sort : public dynamic_array< T >

Обратите внимание, что сортировка слиянием является алгоритмом, и поэтому ее лучше использовать как свободную функцию, чем как объект.Согласно ООП, вы должны спросить is merge_sort a dynamic_array? Для меня ответ звучит как no , поэтому я бы сделал это вместо:

template< class T >
void merge_sort( dynamic_array< T >& array ){ ... }
1 голос
/ 05 ноября 2011
template<class T>
class merge_sort : public dynamic_array<T>

Аргументы шаблона должны быть указаны для базового класса, который вы можете использовать для формирования полностью определенного базового класса.

class merge_sort : public dynamic_array<int>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...