Skip to main content
AI Assist is now on Stack Overflow. Start a chat to get instant answers from across the network. Sign up to save and share your chats.
added 10 characters in body
Source Link

I'm trying to build a custom const_iterator nested class for my Array-based list class. here's the class

class const_iterator { private: const T *p; public: const_iterator(const T *l) { p = l; } const_iterator(const_iterator &ci) { p=ci.p;} const T &operator*() const {return *p;} bool operator==(const iterator &i) const { if(*p==*i) return true; else return false; } bool operator!=(const_iterator &i) const { if(*p!=*i) return true; else return false; } const_iterator &operator=(const_iterator &i) const { p=i.p; return this; } const_iterator &operator++() const { return const_iterator(p+1); } const_iterator &operator--() const { return const_iterator(p-1); } const_iterator operator++(int) const { p = p+1; return const_iterator(p-1); }; const_iterator operator--(int) const { p=p-1; return const_iterator(p+1); } }; 

However, when I go back into my class to make a begin, end, etc. as shown here:

iterator begin() { return iterator(&data[0]); } const_iterator begin() const { return const_iterator(&data[0]); } iterator end() {return iterator(&data[place+1]);} const_iterator end() const {return const_iterator(&data[place+1]);} const_iterator cbegin() const { return const_iterator(&data[0]); } const_iterator cend() const {return const_iterator(&data[place+1]);} 

I get an error: "no matching constructor for initialization of 'ArrayList::const_iterator" on my cbegin and cend. I'm aware it's probably something stupid I don't understand about C++. Thanks in advance for the help!

I'm trying to build a custom const_iterator nested class for my Array-based list class. here's the class

class const_iterator { private: T *p; public: const_iterator( T *l) { p = l; } const_iterator(const_iterator &ci) { p=ci.p;} const T &operator*() const {return *p;} bool operator==(const iterator &i) const { if(*p==*i) return true; else return false; } bool operator!=(const_iterator &i) const { if(*p!=*i) return true; else return false; } const_iterator &operator=(const_iterator &i) const { p=i.p; return this; } const_iterator &operator++() const { return const_iterator(p+1); } const_iterator &operator--() const { return const_iterator(p-1); } const_iterator operator++(int) const { p = p+1; return const_iterator(p-1); }; const_iterator operator--(int) const { p=p-1; return const_iterator(p+1); } }; 

However, when I go back into my class to make a begin, end, etc. as shown here:

iterator begin() { return iterator(&data[0]); } const_iterator begin() const { return const_iterator(&data[0]); } iterator end() {return iterator(&data[place+1]);} const_iterator end() const {return const_iterator(&data[place+1]);} const_iterator cbegin() const { return const_iterator(&data[0]); } const_iterator cend() const {return const_iterator(&data[place+1]);} 

I get an error: "no matching constructor for initialization of 'ArrayList::const_iterator" on my cbegin and cend. I'm aware it's probably something stupid I don't understand about C++. Thanks in advance for the help!

I'm trying to build a custom const_iterator nested class for my Array-based list class. here's the class

class const_iterator { private: const T *p; public: const_iterator(const T *l) { p = l; } const_iterator(const_iterator &ci) { p=ci.p;} const T &operator*() const {return *p;} bool operator==(const iterator &i) const { if(*p==*i) return true; else return false; } bool operator!=(const_iterator &i) const { if(*p!=*i) return true; else return false; } const_iterator &operator=(const_iterator &i) const { p=i.p; return this; } const_iterator &operator++() const { return const_iterator(p+1); } const_iterator &operator--() const { return const_iterator(p-1); } const_iterator operator++(int) const { p = p+1; return const_iterator(p-1); }; const_iterator operator--(int) const { p=p-1; return const_iterator(p+1); } }; 

However, when I go back into my class to make a begin, end, etc. as shown here:

iterator begin() { return iterator(&data[0]); } const_iterator begin() const { return const_iterator(&data[0]); } iterator end() {return iterator(&data[place+1]);} const_iterator end() const {return const_iterator(&data[place+1]);} const_iterator cbegin() const { return const_iterator(&data[0]); } const_iterator cend() const {return const_iterator(&data[place+1]);} 

I get an error: "no matching constructor for initialization of 'ArrayList::const_iterator" on my cbegin and cend. I'm aware it's probably something stupid I don't understand about C++. Thanks in advance for the help!

added 2 characters in body
Source Link
Mark Garcia
  • 17.9k
  • 4
  • 60
  • 95

I'm trying to build a custom const_iterator nested class for my Array-based list class. here's the class

class const_iterator { private: T *p; public: const_iterator( T *l) { p = l; } const_iterator(const_iterator &ci) { p=ci.p;} const T &operator*() const {return *p;} bool operator==(const iterator &i) const { if(*p==*i) return true; else return false; } bool operator!=(const_iterator &i) const { if(*p!=*i) return true; else return false; } const_iterator &operator=(const_iterator &i) const { p=i.p; return this; } const_iterator &operator++() const { return const_iterator(p+1); } const_iterator &operator--() const { return const_iterator(p-1); } const_iterator operator++(int) const { p = p+1; return const_iterator(p-1); }; const_iterator operator--(int) const { p=p-1; return const_iterator(p+1); } }; 

However, when I go back into my class to make a begin, end, etc. as shown here: iterator begin() { return iterator(&data[0]); } const_iterator begin() const { return const_iterator(&data[0]); } iterator end() {return iterator(&data[place+1]);} const_iterator end() const {return const_iterator(&data[place+1]);}

iterator begin() { return iterator(&data[0]); } const_iterator begin() const { return const_iterator(&data[0]); } iterator end() {return iterator(&data[place+1]);} const_iterator end() const {return const_iterator(&data[place+1]);} const_iterator cbegin() const { return const_iterator(&data[0]); } const_iterator cend() const {return const_iterator(&data[place+1]);} 

I get an error: "no matching constructor for initialization of 'ArrayList::const_iterator" on my cbegin and cend. I'm aware it's probably something stupid I don't understand about C++. Thanks in advance for the help!

I'm trying to build a custom const_iterator nested class for my Array-based list class. here's the class

class const_iterator { private: T *p; public: const_iterator( T *l) { p = l; } const_iterator(const_iterator &ci) { p=ci.p;} const T &operator*() const {return *p;} bool operator==(const iterator &i) const { if(*p==*i) return true; else return false; } bool operator!=(const_iterator &i) const { if(*p!=*i) return true; else return false; } const_iterator &operator=(const_iterator &i) const { p=i.p; return this; } const_iterator &operator++() const { return const_iterator(p+1); } const_iterator &operator--() const { return const_iterator(p-1); } const_iterator operator++(int) const { p = p+1; return const_iterator(p-1); }; const_iterator operator--(int) const { p=p-1; return const_iterator(p+1); } }; 

However, when I go back into my class to make a begin, end, etc. as shown here: iterator begin() { return iterator(&data[0]); } const_iterator begin() const { return const_iterator(&data[0]); } iterator end() {return iterator(&data[place+1]);} const_iterator end() const {return const_iterator(&data[place+1]);}

const_iterator cbegin() const { return const_iterator(&data[0]); } const_iterator cend() const {return const_iterator(&data[place+1]);} 

I get an error: "no matching constructor for initialization of 'ArrayList::const_iterator" on my cbegin and cend. I'm aware it's probably something stupid I don't understand about C++. Thanks in advance for the help!

I'm trying to build a custom const_iterator nested class for my Array-based list class. here's the class

class const_iterator { private: T *p; public: const_iterator( T *l) { p = l; } const_iterator(const_iterator &ci) { p=ci.p;} const T &operator*() const {return *p;} bool operator==(const iterator &i) const { if(*p==*i) return true; else return false; } bool operator!=(const_iterator &i) const { if(*p!=*i) return true; else return false; } const_iterator &operator=(const_iterator &i) const { p=i.p; return this; } const_iterator &operator++() const { return const_iterator(p+1); } const_iterator &operator--() const { return const_iterator(p-1); } const_iterator operator++(int) const { p = p+1; return const_iterator(p-1); }; const_iterator operator--(int) const { p=p-1; return const_iterator(p+1); } }; 

However, when I go back into my class to make a begin, end, etc. as shown here:

iterator begin() { return iterator(&data[0]); } const_iterator begin() const { return const_iterator(&data[0]); } iterator end() {return iterator(&data[place+1]);} const_iterator end() const {return const_iterator(&data[place+1]);} const_iterator cbegin() const { return const_iterator(&data[0]); } const_iterator cend() const {return const_iterator(&data[place+1]);} 

I get an error: "no matching constructor for initialization of 'ArrayList::const_iterator" on my cbegin and cend. I'm aware it's probably something stupid I don't understand about C++. Thanks in advance for the help!

Source Link

C++ const_iterator no matching constructor

I'm trying to build a custom const_iterator nested class for my Array-based list class. here's the class

class const_iterator { private: T *p; public: const_iterator( T *l) { p = l; } const_iterator(const_iterator &ci) { p=ci.p;} const T &operator*() const {return *p;} bool operator==(const iterator &i) const { if(*p==*i) return true; else return false; } bool operator!=(const_iterator &i) const { if(*p!=*i) return true; else return false; } const_iterator &operator=(const_iterator &i) const { p=i.p; return this; } const_iterator &operator++() const { return const_iterator(p+1); } const_iterator &operator--() const { return const_iterator(p-1); } const_iterator operator++(int) const { p = p+1; return const_iterator(p-1); }; const_iterator operator--(int) const { p=p-1; return const_iterator(p+1); } }; 

However, when I go back into my class to make a begin, end, etc. as shown here: iterator begin() { return iterator(&data[0]); } const_iterator begin() const { return const_iterator(&data[0]); } iterator end() {return iterator(&data[place+1]);} const_iterator end() const {return const_iterator(&data[place+1]);}

const_iterator cbegin() const { return const_iterator(&data[0]); } const_iterator cend() const {return const_iterator(&data[place+1]);} 

I get an error: "no matching constructor for initialization of 'ArrayList::const_iterator" on my cbegin and cend. I'm aware it's probably something stupid I don't understand about C++. Thanks in advance for the help!