J'ai l'impression que tu pourrais résoudre ton probleme grace au design pattern Visitor.
http://en.wikipedia.org/wiki/Visitor_pattern
la seule chose que tu as à rajouter dans ta classe mère est la fonction accept(Visitor *), en virtual, bien entendu.
Ensuite tu cré une classe abstraite Visitor qui à une methode visit() par classe de ton design (classe A, B, C). Chaque méthode visit prendra une classe différente.
Et dans le accept de chacune des classes, tu mets ce que tu veux mettre...
Tu pourrais donc faire une classe VisitorInitPlugin qui initialise chacun des plugins, par exemple...
Je suis pas sûr que le design colle parfaitement à ton probleme, mais ça vaut peut être le coup d'essayer!
Edit> je viens de voir cela sur dlopen et le C++, c'est assez intéressant... http://www.tldp.org/HOWTO/C++-dlopen/theproblem.html
Message édité par Creak le 21-08-2006 à 10:35:33