从超类创建子类?

发布于 2024-12-13 22:16:24 字数 192 浏览 1 评论 0原文

我正在尝试扩展这个类,

template <class T> class dynamic_array

但这不起作用

class merge_sort : public dynamic_array

扩展该类的正确方法是什么?

I'm trying to extend this class

template <class T> class dynamic_array

This does not work

class merge_sort : public dynamic_array

What is the proper way to extend the class?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如梦初醒的夏天 2024-12-20 22:16:24

您必须为模板提供一个参数。如果您想使用固定参数,例如 int,那么您会这样做:

class merge_sort : public dynamic_array< int >

如果您想将扩展类保留为通用类,您会这样做:

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

请注意,合并排序是一种算法,并且作为因此,作为一个自由函数比作为一个对象更好。根据 OOP,您应该问merge_sort是dynamic_array吗?对我来说,答案听起来是,所以我会这样做:

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

You have to provide an argument for the template. If you want to use a fixed argument, say int, then you would do:

class merge_sort : public dynamic_array< int >

If you instead want to keep the extended class as generic, you would do:

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

Note that merge sort is an algorithm, and as such it would be better off as a free function than as an object. According to OOP, you should ask is merge_sort a dynamic_array? For me the answer sounds as no, so I would do this instead:

template< class T >
void merge_sort( dynamic_array< T >& array ){ ... }
泅渡 2024-12-20 22:16:24
template<class T>
class merge_sort : public dynamic_array<T>

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

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

The template Arguments have to be specified to the base class you can however drive form a fully qualifed base class.

class merge_sort : public dynamic_array<int>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文