Projet STL.NET pour le c++\cli
Bonjour,
J'ai déjà évoqué ce sujet sur le forum .NET, mais l'utilisation de la STL en C++ managé ne semble pas passionner les foules.
Voilà, j'ai surtout codé en c++ jusqu'ici, et tout ce que je fais utilise beaucoup la stl, ou son mode de fonctionnement. (algorithmes pas paires d'itérateurs etc)
Je dois intégrer du code que j'ai fait dans une librairie codée dans le framework .NET (oui, je ne suis pas fan non plus) et j'ai donc simplement compilé mes sources en mode \clr pour disposer des sources.
Pour l'instant, quand je veux appeler un de mes algo sur un "conteneur" du framework, je dois copier tout le conteneur dans un conteneur standard avant de l'appeler sur ce conteneur. Evidemment, c'est un peu frustrant quand on a fait tant d'efforts pour avoir un code efficace...
J'essaie de coder une classe vérifiant le concept d'un RandomAccesIterator, permettant d'accéder à un
Code:
cli::array<double> ^
par exemple, mais l'opérateur [] du cli::array ne renvoie pas de vraie référence mais une référence managée.
Pour l'instant, il semble que les différentes voies semblent être :
- pin_ptr pour retrouver une vraie référence
- utilisation de l'implémentation STL.NET qui accepte les référence managées.
Le but pour moi est de ne surtout pas toucher aux sources codée en c++ iso en les poluant avec du c++\cli.
Une idée ?
Iterator sur conteneur managé
C'est bien ce que j'ai commencé à faire, mais il y a pleins de limitations :
On ne peut pas faire de référence ou de pointeur sur un objet managé (que des références managées ou des pointeurs managés.)
Je voulais conourner celà en utilisant les
typedef value_type % reference
typedef value_type ^ pointer
au lieu de
typedef value_type & reference
typedef value_type * pointer
etc...
Mais bon, je me heurte à d'autres difficultés.
C'est pour ça que je me demandais si quelqu'un avait déjà fait ça avant moi.
S.