Given my code...
widgetman.h
widgetmanager.cppCode:class WIDGETMANAGER{
public:
~WIDGETMANAGER();
WIDGETMANAGER();
static WIDGETMANAGER* instance();
private:
std::vector<WIDGET*> widgets;
static WIDGETMANAGER* pInstance;
protected:
WIDGETMANAGER(const WIDGETMANAGER&);
WIDGETMANAGER& operator= (const WIDGETMANAGER&);
};
Now in WIDGET::WIDGET()Code:WIDGETMANAGER* WIDGETMANAGER::pInstance = 0;
WIDGETMANAGER::WIDGETMANAGER(){
std::cout << "WIDGET MANAGER INITIALIZED\n";
this->x = 0;
}
WIDGETMANAGER::~WIDGETMANAGER(){
int numWidgets = this->widgets.size();
int deleteCount = 0;
for(int i = 0; i < numWidgets; i++){
if(this->widgets[i]){
delete this->widgets[i];
deleteCount++;
}
}
std::cout << "WIDGET MANAGER DESTROYED [" << deleteCount << " WIDGETS DESTROYED]\n";
}
WIDGETMANAGER* WIDGETMANAGER::instance(){
if(!WIDGETMANAGER::pInstance){
WIDGETMANAGER::pInstance = new WIDGETMANAGER();
}
return WIDGETMANAGER::pInstance;
}
I'm getting WIDGET MANAGER INITIALIZED output for every WIDGET I create.Code:this->widgetManInstance = WIDGETMANAGER::instance();
I initialized WIDGETMANAGER in another class, the first instance. So shouldn't every other instance be the same? Or am I just not getting this whole idea.