2010-02-15 7 views
1

J'ai une méthode géré C++ qui prend comme paramètre une liste de chaînes^comment mettre un pin_ptr dans une liste générique?

la méthode a besoin pour remplir une structure non gérée avec des pointeurs vers la mémoire dans la chaîne^

extraction du WCHAR * est assez simple avec PtrToStringChars

mais je ne sais pas le nombre de années pin_ptr à allouer au moment de la conception

Je voudrais ajouter le épinglé PTR à une liste, avec quelque chose de semblable à ce qui suit liste < pin_ptr < const wchar_t >>

faisant cela donne erreur C3225: argument de type générique pour 'T' ne peut pas être 'cli :: pin_ptr', il doit être un type de valeur ou une poignée à une référence

est là un moyen de le faire? en gestion C++

Répondre

1

Eh bien, vous avez quelques problèmes. First pin_ptr n'est pas un type géré, donc vous ne pourriez pas le mettre dans une liste. Vous pouvez utiliser un vecteur C++ à la place, sauf:

Les pointeurs d'ancrage ne peuvent être déclarés que comme variables locales non statiques sur la pile.

de http://msdn.microsoft.com/en-us/library/1dz8byfh%28VS.80%29.aspx.

A la place, vous devrez probablement utiliser GCHandles avec un GCHandleType de Pinned directement.