class MySingleton{
	private:
		//1. Private constructor για να μη γραψει ο χρηστης δικο του αντικειμενο
		MySingleton(){}

		//2. Απαγορευση κλωνοποιησης () για να μην αντιγραφει το μοναδικο αντικειμενο
		MySingleton(const MySingleton&)=delete;
		MySingleton& operator=(const MySingleton&)=delete;

		//3. Ο static δεικτης που δειχνει στο μοναδικο αντικειμενο. Επειδη ειναι static αρχικοποιηται εξω απο την κλαση
		static MySingleton* instance;

	public:
		//4. Η στατικη συναρτηση που πρωτα ελεγχει αν ο δεικτης ειναι nullptr. Αν ειναι, τοτε φτιαχνει το αντικειμενο
		//ενω αν δεν ειναι απλα επιστρεφει το υπαρχον.
		static MySingleton* getInstance(){
			if(instance==nullptr){
				instance=new MySingleton();
			}
			return instance;
		}
};

//Αρχικοποιηση του δεικτη
MySingleton* MySingleton::instance=nullptr;
