Есть шаблонный класс
template<typename It>
class PAGE {
private:
It begin_, end_;
public:
PAGE(It begin, It end) : beg_(begin), end_(end){
}
It begin() {
return begin_;
}
It end() {
return end_;
}
};
Он содержит интервал определенных элементов. И есть класс, который создает классы PAGE, забрасывая их в массив:
template<typename Iterator>
class Paginator {
public:
Paginator(Iterator begin, Iterator end, size_t page_size){
// Лишний код удален для понятности, но тут он делит переданный интервал и превращает в PAGE
}
const Iterator begin() const {
return pages.begin();
}
const Iterator end() const {
return pages.end();
}
private:
vector< PAGE<Iterator> > pages;
};
И ожидается, что при попытке проитерироваться по страницам циклом
Paginator<vector<int>::iterator> paginate_v(v.begin(), v.end(), 6);
for (const auto& pageTest: paginate_v) {
for (int& x : pageTest) {
}
}
Второй цикл будет использовать ф-ции begin()
и end()
в классе PAGE
, но переменная pageTest
почему-то становится типом int, а не классом PAGE<vector<int>::iterator>
. В чем проблема? Документацию по циклу уже читал, но это не особо помогло
Все, проблема решена, я ошибся с возвращаемым типом,нужен был
typename vector<PAGE<Iterator>>::iterator
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
прошу опытных товарищей подсказать как лучше реализовать шаблонную функциюПредположим у меня есть такая структура:
Я хочу объявить тип long long double , но компилятор выдает ошибку, так как для него это все равно,что объявление int doubleМожно ли все-таки объявить...
Есть класс (не шаблонный и шаблонным его делать нельзя) с шаблонным конструктором:
Беру число из массива и перевожу в строку в связи с тем что работать надо с битами