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!