C++: Vecteur d'objets vs. vecteur de pointeurs vers de nouveaux objets?

Je cherche à améliorer mon C++ compétences par l'écriture d'un exemple de moteur de rendu logiciel. Il prend des objets composés de points dans un espace 3d et des cartes à une fenêtre d'affichage 2d et dessine des cercles de taille variable pour chaque point de vue. Quel est le meilleur:

class World{
    vector<ObjectBaseClass> object_list;
public:
    void generate(){
        object_list.clear();
        object_list.push_back(DerivedClass1());
        object_list.push_back(DerivedClass2());

ou...

class World{
    vector<ObjectBaseClass*> object_list;
public:
    void generate(){
        object_list.clear();
        object_list.push_back(new DerivedClass1());
        object_list.push_back(new DerivedClass2());

?? Serait en utilisant les pointeurs dans le 2ème exemple pour créer de nouveaux objets à vaincre le point de l'utilisation de vecteurs, car les vecteurs d'appeler automatiquement le DerivedClass destructeurs dans le premier exemple, mais pas dans le 2ème? Sont des pointeurs vers de nouveaux objets nécessaires lors de l'utilisation de vecteurs en raison de gérer la mémoire de gestion eux-mêmes aussi longtemps que vous utilisez leurs méthodes d'accès? Maintenant, disons que j'ai une autre méthode dans le monde:

void drawfrom(Viewport& view){
    for (unsigned int i=0;i<object_list.size();++i){
        object_list.at(i).draw(view);
    }
}

Lorsqu'il est appelé cela va exécuter la méthode de tirage pour chaque objet de la liste mondiale. Disons que je veux classes dérivées pour être en mesure d'avoir leurs propres versions de draw(). Serait la liste doivent être des pointeurs pour utiliser le sélecteur de la méthode (->) ?

  • thnx édité pour ne pas détourner l'attention de la question
InformationsquelleAutor metamemetics | 2010-04-22