12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
#include <iostream> #include <iterator> #include <deque> using std::cin; using std::cout; using std::endl; using std::ostream; class Base{ public: Base(int foo = 5): test(foo){} friend ostream& operator<<(ostream &stream, const Base &obj){ stream << obj.test << endl; return stream; } int return_test()const{return test;} private: int test; }; class Dervied : public Base{ public: Dervied(): Base(5){cha = 'a';} friend ostream& operator<<(ostream &stream, const Dervied &obj){ stream << obj.return_test() << " " << obj.cha; return stream; } private: char cha; }; class Dervied2 : public Base{ public: Dervied2(): Base(5){cha = 'z';} friend ostream& operator<<(ostream &stream, const Dervied2 &obj){ stream << obj.return_test() << " " << obj.cha; return stream; } private: char cha; }; int main(){ std::deque<Base> test; Dervied one; Dervied2 two; test.push_back(one); test.push_back(two); // Need this to use Dervied and Dervied2 operator<< std::copy(test.begin(),test.end(),std::ostream_iterator<Base>(cout, " ")); cin.get(); return 0; }