Последние 4 года я провел в C #, поэтому меня интересуют текущие передовые практики и общие шаблоны проектирования в C ++. Рассмотрим следующий частичный пример:
class World
{
public:
void Add(Object *object);
void Remove(Object *object);
void Update();
}
class Fire : Object
{
public:
virtual void Update()
{
if(age > burnTime)
{
world.Remove(this);
delete this;
}
}
}
Здесь у нас есть мир, ответственный за управление набором объектов и их регулярное обновление. Огонь - это объект, который может быть добавлен в мир при многих других обстоятельствах, но обычно другим объектом, уже существующим в мире. Огонь - единственный объект, который знает, когда он сгорел, поэтому в настоящее время я удаляю его сам. Объект, который создал огонь, вероятно, больше не существует или не имеет отношения к делу.
Разумно ли это делать или есть лучший дизайн, который поможет очистить эти объекты?