Produit du jour : Micro Application Sécurité & Optimisation 2008 à partir de 39.00 € (Logiciel)
07/02/2004 15:06 par Vincent Richard | 8 réponse(s) | Signaler un contenu abusif ou erroné
Bonjour,

Soit le système de classes :

class A { };
class B : virtual public A { public: void f(); };
class C : virtual public A { public: void g(); };
class D : public B, public C { };

Sachant que tous les objets contenus dans le vecteur sont de même type
dynamique (par exemple 'D'), est-il valide d'écrire :

std::vector <A*> v;

// ...

// Un "dynamic_cast" une fois pour toutes...
const int offset = static_cast <int>(dynamic_cast <C*>(v[0]) - v[0]);

for (std::vector <A*>::iterator it = v.begin() ; it != v.end() ; ++it)
{
static_cast <C*>(*it + offset)->f();
}

Ceci afin d'éviter la multitude de "dynamic_cast" (lent) avec des vecteurs
qui contiennent un grand nombre d'éléments (par exemple 1000).

Merci d'avance.

Vincent

--
vmime, une bibliothèque C++ sous licence GPL pour parser et générer
des messages au format MIME : http://www.sourceforge.net/projects/vmime/
Voir les 8 réponses - Poster une réponseCe sujet ne répond pas à vos besoins ? Posez votre question !
mots-clés : optimisation, dynamic, cast Catégories : Développement, Langage C++
 
vector et constructeur
fenetre sous DOS...
 

 

Téléchargements

Tous les téléchargements