Otóż, piszemy aplikację na wiele platform i stosujemy singletony Meyersa w następujący sposób:
GeneralController.cpp:
GeneralController::GeneralController(void)
{
ArffFormat::StartProduce();
StructureManager::getInstance().discretizeFunction =
&DiscretizingMethods::SimplyDiscretization::simplyDiscretization;DiscretizingMethods::SimplyDiscretization::numberOfIntervals=20; nmbArguments = 8; nmbRows = 40; nmbTrees = 10;
}
GeneralController& randomforest::GeneralController::getInstance()
{
static GeneralController instance;
return instance;
}
I teraz problematyczny StructureManager (nie tworzy obiektu, w debuggerze okazuje się, że próbuje 2 razy stworzyć obiekt, ale ponieważ jest singletonem- jest ok. Poza tym - nie wchodzi do konstruktora!!
StructureManager& randomforest::StructureManager::getInstance()
{
static StructureManager StructureInstance;
return StructureInstance;
}
StructureManager::StructureManager()
{
workers=0;
stage = INTRODUCTION;
}
O ile kod działa pod VS 2008, nie działa pod linuxem (kompiluje się bez problemu, a potem no właśnie... Zatrzymuje się na pierwszej linijce StructureManager getInstance, bez żadnego komunikatu o błędach. Pomoże ktoś?