и итератор для него. Класс массива я определил так:
template<class T>
class SmartArray
{
...
public:
class SmartArrayIterator;
SmartArrayIterator Begin();
SmartArrayIterator End();
...
};
Реализация методов Begin и End:
template <class T>
typename SmartArray<T>::SmartArrayIterator SmartArray<T>::Begin()
{
return SmartArrayIterator(Data, Size, 0);
//тут я передаю в конструктор указатель на елемент массива, размер и индекс елемента
}
Аналогично End.
Далее я определяю класс итератора:
template <class T>
class SmartArray<T>::SmartArrayIterator
{
...
SmartArrayIterator(T *ObjPointer, int Size, int Index) :ObjPointer(ObjPointer), Size(Size), Index(Index) {} //это закрытый конструктор, который используют методы Begin и End.
public:
...
};
При попытке инициализации итератора значением SmartArray::Begin(), компилятор пишет, что не найден подходящий конструктор инициализации. Как это побороть?
SmartArrayIterator(const SmartArrayIterator&) = default
а что у тебя хранит твой массив
Советую использовать для begin и end стандартный код стайл, а не С#-ский
Обсуждают сегодня