// // extremely simplified list-of-characters class -- // example of defining a class based on a calling // program (use-list.cpp). // #ifndef CHAR_LIST_H_ // be sure we don't include #define CHAR_LIST_H_ // this code twice. #include #include class char_list { private: //implement using a vector of characters. vector chars; public: // a typedef for length, position. typedef vector::size_type size_type; // constructors. char_list(void) { } // needed for + operator. char_list(const char c) { chars.push_back(c); } char_list(const char *s) { for (int i = 0; s[i] != '\0'; ++i) chars.push_back(s[i]); } // length of list: // post: returns number of characters in list. size_type length(void) const { return chars.size(); } // += operator: // post: c has been concatenated onto the current object. void operator+= (const char_list & c) { for (vector::size_type i = 0; i < c.length(); ++i) chars.push_back(c.chars[i]); } // + operator: // post: returns the concatenation of c1 and c2. friend char_list operator+ (const char_list & c1, const char_list & c2) { char_list temp; temp += c1; temp += c2; return temp; } // << operator: // post: the characters in c have been printed to o. friend ostream & operator<< (ostream & o, const char_list & c) { for (vector::size_type i = 0; i < c.length(); ++i) o << c.chars[i]; return o; } }; #endif // CHAR_LIST_H_