Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Да, гаранитую ? 17.09.08 18:09 Число просмотров: 2319
Автор: void <Grebnev Valery> Статус: Elderman
|
> void тут высказывается про ровные места. Если бы они были > бы ровными - поста бы не появилось.
In the simplest case you might try this. No?
////////////////////////////////////////////////////////////////////
// My_class.cpp
class My_class
{
public:
static My_class& unsafe_instance()
{
static My_class inst;
return inst;
}
bool initialize(void)
{
bool rc = false;
// TO DO
return rc;
}
void deinitialize(void)
{
// TO DO before dtor()
}
private:
My_class()
{
}
~My_class()
{
}
My_class& operator =(const My_class&);
};
static struct init_my_class
{
init_my_class() : m_instance(My_class::unsafe_instance())
{
m_initialized = m_instance.initialize();
}
~init_my_class()
{
m_instance.deinitialize();
}
bool m_initialized;
My_class& m_instance;
init_my_class& operator=(const init_my_class&);
} _init_my_class_;
void initialize_my_classes(void)
{
if (false ==init_my_classm_initialized)
{
throw std::exception("an error at init_my_class startup");
}
/* TO DO
else if ()
{
throw std::exception("an error at ....");
}
*/
else
{
}
}
////////////////////////////////////////////////////////////////////
// main.cpp
int _tmain(int argc, _TCHAR* argv[])
{
try
{
// there is only a place where you initialize/check your statics
initialize_my_classes();
}
catch(std::exception& e)
{
printf("Failed to initialize my staff (%s)", e.what());
return 1;
}
catch(...)
{
printf("Failed to initialize my staff (unhandled exception at startup)");
return 1;
}
return 0;
}
---
|
|
|