我的头衔有点混乱,让我解释一下。我已经编写了一个类似链接的模板类,因为它可以接受和c ++中的数据类型(我基本上重写了std :: list但是有一个单链表),但是现在我正在尝试在List模板中定义一个子类Iterator ,我知道如何在大多数情况下实现所有这些,我的问题是关于正确的编码风格。我理解模板我无法将我的课程分成单独的标题和源文件,好吧所以我定义了类在那里放了几个函数模板,然后在下面写了函数...很酷,但现在关于我的子类Iterator,我应该在哪里编写这些函数的代码,那么我不应该在类中编写它吗?或者我应该在列表类之外写它,但是在同一个文件中?如果是这样我怎么做这个常规GenList :: Iterator :: next()工作?或者它是否是其他东西(GenList是我的链表类,next()将是我为Iterator写的函数)?或者我应该在GenList之外但在同一个头文件中定义我的迭代器?如果不清楚,请要求澄清任何部分
答案 0 :(得分:0)
样式问题偏离主题,您使用它的编码风格。如果要在类定义之外定义迭代器类型的成员函数,则语法为:
template<typename T>
GenList<T>::Iterator
GenList<T>::Iterator::operator++(int)
{
Iterator tmp(*this);
// increment *this
return tmp;
}
就我个人而言,我通常会在类定义中定义类似内联的小成员函数。
是否有充分的理由调用迭代器Iterator
而不是传统的iterator
?