Guest User

Untitled

a guest
Dec 17th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. template<class T> class Iterable
  2. {
  3. T start,stop;
  4. public:
  5. explicit Iterable(T s,T e) {start=s; stop=e;}
  6.  
  7.  
  8. public:
  9. virtual void next(T& i);
  10. public:
  11. class iterator: public std::iterator<
  12. std::input_iterator_tag, // iterator_category
  13. T, // value_type
  14. long, // difference_type
  15. const T*, // pointer
  16. T // reference
  17. >{
  18. T current;
  19. Iterable<T>& obj;
  20. public:
  21. explicit iterator(T t,Iterable<T>& o) : obj(o) {current=t;}
  22. iterator& operator++() {obj.next(current); return *this;}
  23. iterator operator++(int) {iterator retval = *this; ++(*this); return retval;}
  24. bool operator==(iterator other) const {return current == other.current;}
  25. bool operator!=(iterator other) const {return !(*this == other);}
  26. T operator*() const {return current;}
  27. };
  28. iterator begin() {return iterator(start,*this);}
  29. iterator end() {return iterator(stop,*this);}
  30. };
  31. class Range : public Iterable<long>
  32. {
  33. long START,STOP;
  34. public:
  35. void next(long& cur) override
  36. {
  37. if(START>=STOP)
  38. cur++;
  39. else
  40. cur--;
  41. }
  42. public:
  43. Range(long st,long en) : Iterable(st,en) {START=st; STOP=en;}
  44.  
  45. };
  46.  
  47. undefined reference to `flex::Iterable<long>::next(long&)'
  48. collect2: error: ld returned 1 exit status
  49.  
  50. (After includes)
  51. int main()
  52. {
  53. Range range=Range(15,10);
  54. for(auto r : range)
  55. cout << r << "n";
  56. }
Add Comment
Please, Sign In to add comment