// Make Database a Singleton #include #include using std::vector; using std::ostream; using std::endl; using std::cout; class Student { public: Student() : name(new char[1]), gpa(0), cuid(0) { } Student(char* n, float g, int c) : name(new char[strlen(n)+1]), gpa(g), cuid(c) { } Student(const Student& stu) : name(new char[strlen(stu.name)+1]), gpa(stu.gpa), cuid(stu.cuid) { } ~Student() { delete [] name; } private: char* name; float gpa; int cuid; }; class Database { public: static Database* getInstance() { if (!databaseInstance) databaseInstance = new Database; return databaseInstance; } void insert(const Student& s) { students.push_back(s); } unsigned int size() const { return students.size(); } private: Database() {} Database(const Database&) {} Database& operator=(const Database&) { return *this; } static Database* databaseInstance; vector students; }; Database * Database::databaseInstance = NULL; int main() { Database * data = Database::getInstance(); data->insert( Student("Ben", 3.9, 27) ); data->insert( Student("Waldo", 1.5, 17) ); std::cout << data->size() << std::endl; return 0; }