从超类创建子类?

时间:2011-11-04 21:28:14

标签: c++ subclass extend

我正在尝试扩展此类

template <class T> class dynamic_array

这不起作用

class merge_sort : public dynamic_array

扩展课程的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

您必须为模板提供参数。如果你想使用一个固定的参数,比如说int,你就可以这样做:

class merge_sort : public dynamic_array< int >

如果您希望将扩展类保持为通用,那么您可以这样做:

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

请注意,合并排序是一种算法,因此作为自由函数而不是作为对象会更好。根据OOP,你应该问merge_sort一个dynamic_array吗?对我来说,答案听起来像是没有,所以我会这样做:< / p>

template< class T >
void merge_sort( dynamic_array< T >& array ){ ... }

答案 1 :(得分:1)

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

模板参数必须指定给基类,但是您可以从完全限定的基类驱动。

class merge_sort : public dynamic_array<int>