使用类模板在类中编写类时的正确样式

Proper style when writing a class within a class using a class template

本文关键字:样式      更新时间:2023-10-16

我的标题有点令人困惑,让我解释一下。我已经写了一个类似链接的模板类,这样它就可以接受c++中的数据和类型(我基本上重写了std::list,但使用了一个单独的链接列表),然而现在我正试图在我的list模板中定义一个子类Iterator,我了解如何在大多数情况下实现所有这些,我的问题是关于正确的编码风格。我知道用模板我不能把我的类分解成一个单独的头文件和源文件,好吧,所以我定义了这个类,在里面放了一些函数模板,然后在下面写函数。。。很酷,但现在关于我的子类Iterator,我应该在哪里为这些函数编写代码,不会有太多,所以我应该简单地在类中编写它吗?还是应该在列表类之外,但在同一个文件中编写?如果是这样的话,我该怎么做?约定GenList::Iterator::next()会起作用吗?或者它是其他东西(GenList是我的链表类,next()是我为Iterator编写的函数)?或者我应该在GenList之外但在同一个头文件上定义迭代器吗?如果不清楚,请要求澄清的任何部分

风格问题脱离主题,您使用的编码风格由您决定。如果你想在类定义之外定义迭代器类型的成员函数,那么语法应该是:

template<typename T>
  GenList<T>::Iterator
  GenList<T>::Iterator::operator++(int)
  {
    Iterator tmp(*this);
    // increment *this
    return tmp;
  }

就我个人而言,我通常在类定义中定义类似内联的小成员函数。

是否有充分的理由调用迭代器Iterator而不是传统的iterator