#include #include using std::string; class Student { public: Student(const string& n) : name(n) {} const string& getName() const { return name; } void setName(const string& n) { name = n; } private: string name; }; std::ostream& operator<<(std::ostream& out, const Student& stu) { out << stu.getName(); return out; } class Database { public: static Database* getInstance() { if ( instance == NULL ) instance = new Database; return instance; } void insert(const Student& stu) { students.push_back(stu); } void print() { std::cout << "The data is/are:" << std::endl; for (unsigned int i = 0; i < students.size(); ++i) { std::cout << students[i] << std::endl; } } private: std::vector students; Database() {} static Database* instance; }; Database* Database::instance = NULL; void doit() { Database * data = Database::getInstance(); data->insert(Student("Ross")); data->print(); } int main() { Database * data = Database::getInstance(); data->insert(Student("Joseph")); data->insert(Student("Steve")); data->insert(Student("Jonathan")); data->print(); doit(); data->print(); return 0; }