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/