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, ...