Esiste un componente software Processor
che elabora gli oggetti Item
in un thread dedicato. Item
può essere elaborato più volte (in particolare, è un oggetto timer).
Uno dei campi di Item
è un puntatore a BaseObject
. Quindi tutte le classi derivate di BaseObject
(ad esempio DerivedObject
) possono risiedere in Item
. % istanze diItem
vengono create in alcune parti del codice come SomeFunction()
e aggiunte alla coda di elaborazione di Processor
.
// Base class of objects that are passed around
class BaseObject {}
class DerivedObject : public BaseClass {}
// Unit of work
class Item {
public:
BaseObject * obj;
}
class Processor {
std::vector<Item> items;
public:
void AddItem(Item item);
// Run in another thread and process items
void Work() {
...
SomeCallback(item.obj);
...
}
}
Processor processor; // There is a single instance of the processor
void SomeFunction() {
DerivedObject * dObject = new DerivedObject();
Item item;
item.obj = dObject;
processor::AddItem(item);
}
Domande:
1) Quando e dove dovrei eliminare dObject
?
2) È un buon approccio copiare il contenuto di dObject
mentre lo aggiungi a Item
?
Grazie per il tuo aiuto in anticipo!