Ho bisogno di creare puntatori di istanze di una classe e il programma non sa al momento della compilazione quanti puntatori creerò. Per la cancellazione, stavo considerando di memorizzare i puntatori in un vettore e quindi eliminarli uno per uno. L'uso di puntatori intelligenti sarebbe un modo più pulito per andare? E se uno non vuole usare i puntatori intelligenti, questo uso del vettore dovrebbe essere considerato pulito?Eliminazione del vettore di puntatori
codice minimo:
#include <vector>
using namespace std;
class Foo {
public:
Foo();
};
Foo::Foo(){}
void createFooVector(int nb, std::vector<Foo*> &v){
for(int i=0;i<nb;i++){
Foo* f = new Foo();
v.push_back(f);
}
}
int main(int argc, char *argv[]){
std::vector<Foo*> v;
createFooVector(5,v);
while (!v.empty()){
Foo* f = v.back();
v.pop_back();
delete f;
}
}
Hai davvero bisogno di un contenitore di puntatori? Non puoi memorizzare gli oggetti 'Foo' come valori (' std :: vector ')? Inoltre, non sarebbe più chiaro se 'createFooVector' restituisse un nuovo vettore invece di modificare quello dato come argomento? –
@LucTouraille Uso il puntatore per questo motivo: http://stackoverflow.com/questions/15471193/vector-of-virtual-class-are-pointers-the-clean-way-to-go ... questo non potrebbe essere visto nel codice che mostro qui, però, ho cercato di mantenerlo minimo – Vince