我试图在数组类中声明一个迭代器类,然后在数组类之外实现它。但是,我遇到语法错误。我不确定为什么这不起作用。我只能推断出问题出在我尝试实现数组迭代器的过程中。我在下面标记了给定错误的行。询问您是否需要发布其他任何代码或进行某种解释,我删除了很多代码以防止发布混乱。
编辑:我用正确的标题替换了错误的标题。我收到了不同的错误,这些错误是通过放置typename关键字修复的。有人可以解释为什么typename关键字是我的迭代器类实现的原因吗?我没有收到的错误是
std_bidirectional_iterator:ds :: Array :: iterator不是派生参数的有效模板参数。
Array.h
var vm = _context.Person
.Select(x => new IndexListItem
{
Name = x.Name,
Address = x.Address?.FirstLine + " " + x.Address?.SecondLine,
ID = x.ID
})
.ToList();
std_bidirectional_iterator.h
#include "Common.h"
#include "ArrayInterface.h"
#include "std_bidirectional_iterator.h"
template<class T, size_t N>
class ds::ArrayTwo : public ArrayInterface<T>
{
class iterator; // Tried with all following implementations
template<class T> class reverse_iterator;
template<class U> class const_iterator;
template<class T> class const_reverse_iterator;
};
template<class T, size_t N>
// Error on line below[fixed by typename]
class ds::ArrayTwo<T, N>::iterator : public std_bidirectional_iterator<typename ds::ArrayTwo<T, N>::iterator, T>
{
};