Класс уничтожается прежде, чем нужно. Как правильно его закрепить в памяти? Занести его объект в какой либо список?
Без примера кода сложно сказать в чем же ваша проблема. Попробую включить телепатию. Вероятно вы делаете что-то вроде:
void foo(){
MyClass object;
//...
}
И object уничтожается при выходе из foo.
В данном случае object это стековый объект, который живет ровно до конца текущей области видимости. Если вас не устраивает такое время жизни, то объект нужно создавать в куче и уничтожать вручную:
MyClass *object;
void foo(){
object = new MyClass;
//...
}
void bar(){
delete object;
object = 0; //для порядка
}
Однако вам следует быть осторожным, если вы забудете удалить объект, или потеряете указатель на него, то это приведет к утечке памяти.
Немного облегчить жизнь вам могут умные указатели. Например так:
std::unique_ptr<MyClass> object;
void foo(){
object.reset(new MyClass); //Старый объект удален, новый создан
//...
}
void bar(){
object.reset(0); //Старый объект удален
}
Есть еще вариант, когда объект самоуничтожается выполняя delete this;. Однако с этой конструкцией все так просто как может показаться на первый взгляд. Это тема для отдельного вопроса
Каково должно быть время жизни этого класса? Если все время работы программы - сделайте его глобальным.
А вообще странный дизайн - поток внутри объекта класса. Логичнее объект класса в потоке создать и работать с ним.
Ну, а выкрутиться - передайте в поток копию и работайте с ней. Если просто копировать нельзя - создавайте свой объект динамически, оберните в shared_ptr (если с объектом нужно работать еще и в основной программе) или в unique_ptr, который потом передайте в поток...
Сборка персонального компьютера от Artline: умный выбор для современных пользователей