C++ C++;内部类与参数

C++ C++;内部类与参数,c++,list,iterator,listiterator,C++,List,Iterator,Listiterator,我在为我的内部类列表迭代器内部列表创建ctor时遇到问题,我不知道这为什么不起作用: template<class T, int length> class List { public: typedef struct Row { T data; int prev; int next; } Row; class ListIterator { typedef ListIterator iterato

我在为我的内部类
列表迭代器
内部
列表
创建ctor时遇到问题,我不知道这为什么不起作用:

template<class T, int length>
class List {
public:
    typedef struct Row {
        T data;
        int prev;
        int next;
    } Row;

    class ListIterator {
        typedef ListIterator iterator;
        public:
            ListIterator(int mPos, Row mRow) : pos(mPos) , row(mRow){}
            //methods
        private:
            int pos;
            Row row;
    };

    typedef ListIterator iterator;

    iterator begin() const;
private:
    Row storage[length];
    int startDataIdx = 0;
};

template<class T, int length>
typename List<T,length>::iterator
List<T, length>::begin() const{
    iterator item_iterator(startDataIdx, storage[startDataIdx]);
    return(item_iterator);
}
模板
班级名单{
公众:
类型定义结构行{
T数据;
国际通行证;
int-next;
}行;
类列表迭代器{
typedef列表迭代器迭代器;
公众:
ListIterator(int-mPos,Row-mRow):pos(mPos),Row(mRow){}
//方法
私人:
int pos;
行行;
};
typedef列表迭代器迭代器;
迭代器begin()常量;
私人:
行存储[长度];
int startDataIdx=0;
};
模板
类型名列表::迭代器
List::begin()常量{
迭代器项_迭代器(startDataIdx,存储[startDataIdx]);
返回(item_迭代器);
}
调用“List::ListIterator::ListIterator(const int&,const Row&)”时没有匹配的函数

我想创建一个
列表迭代器
,该迭代器的
T
List
参数相同(显然是因为它迭代的元素类型与
List
包含的元素类型相同),我该怎么做? 在方法
begin()
中使用
new
会更好吗?还是保持原样(不要使用new,不管它有什么优点)

迭代器构造函数的第一个参数是对可变
int
的引用

List<T, length>::begin() const{
   iterator item_iterator(startDataIdx, ...
List::begin()常量{
迭代器项\迭代器(startDataIdx。。。
您正在一个
const
类方法中构造迭代器。
this
在这里是
const
startDataIdx
在这里是有效的
const
,并且我确信您理解,您不能创建对
const
对象的非
const
引用


在这种情况下,使用对迭代器参数的引用绝对没有任何用处。只需去掉引用,并传入一个简单的
int

好的,我现在用工作代码编辑了我的问题,非常感谢!你对如何解决我的其他问题有什么想法吗?是的,但是
Row*mRow
ha这是同样的问题,你不能仅仅摆脱
*
。每个标准库容器都有
迭代器
常量迭代器
内部类,你为什么这么认为?你是说我不能创建一个
迭代器
,它引用了
列表中的一行?
List<T, length>::begin() const{
   iterator item_iterator(startDataIdx, ...