2010-08-19 23 views
2

J'ai été chargé de supprimer des composants RogueWave d'une base de code C++ héritée. Pour ce faire, je tente de construire des wrappers autour des composants existants, de m'assurer que le code fonctionne de la même manière, puis de choisir une bibliothèque différente comme boost pour coller dans les wrappers. L'un des problèmes que je rencontre est que beaucoup de la base de code attend des pointeurs vers des objets RogueWave. Je peux créer une classe Wrapper Object fictive qui pointe vers l'objet RogueWave d'origine, mais je n'arrive pas à comprendre comment envelopper correctement les éléments de cet objet RW, tels que les éléments d'itérateur lorsque le code attend un pointeur modifiable dans l'objet original.Comment ne pas utiliser RogueWave avec du code existant?

Des suggestions ou des conseils pour d'autres approches? (Note: Je suis un peu rouillé sur mon C++)

+0

Par curiosité: Pourquoi supprimez-vous les trucs Rogue Wave? Et +1. C'est un scénario de manuel qui crie pour l'application soigneuse des modèles. De plus, je ne pense pas que vous serez en mesure de refondre votre code client. Vous devrez créer une interface plus générique, puis mettre à jour les appels client. –

+0

De quels composants RogueWave voulez-vous vous débarrasser? –

+0

@John Dibling Le composant rw principal que j'essaie de supprimer est la sérialisation, qui est fortement liée au cadre rw. @Paul Sasik: Je ne connais pas la raison officielle, mais c'est ce que l'on m'a assigné. Il serait utile d'être en mesure de passer d'un composant à l'autre quand des choses nouvelles et meilleures sortent, de toute façon. – Paul

Répondre

1

Adapter Pattern

Bridge Pattern

Si ceux-ci ne fonctionne pas:

Facade Pattern

+0

Je comprends comment cela fonctionne pour les classes uniques. Mon problème est que je ne sais pas/comprendre comment concevoir/implémenter cela pour plusieurs classes. Par exemple, si j'ai une classe RW Collection, et à l'intérieur sont RW Strings, comment puis-je accéder au contenu de la collection wrapper en tant que chaînes wrapper? – Paul

+0

Voulez-vous dire que vous avez quelque chose comme RWCollection , et vous devez le remplacer par MyCollection ? Je ne vois pas le problème. Vous voulez élaborer? – Rodyland

+0

Si je définis MyCollection en tant qu'adaptateur contenant une instance de RWCollection , lorsque je parcours MyCollection, j'obtiens des pointeurs vers RWStrings plutôt que vers MyStrings. Comment puis-je convertir l'un à l'autre et renvoyer un pointeur vers MyString nouvellement envelopper? – Paul

1

J'ai eu une tâche similaire 10 il y a des années, il s'est avéré que la plupart des choses que nous utilisions pour Roguewave faisaient partie de la norme en C++. Dans la plupart des cas, il existait une structure de données standard C++ directe capable de remplacer l'utilisation de Roguewave.

Si vous ne pouvez pas effectuer un remplacement direct et que vous utilisez peut-être une autre bibliothèque tierce ou votre propre bibliothèque, les modèles mentionnés par JustBoo seraient idéaux.