Da qualche settimana sto giocando con C++/CLI, perche' e' proprio come un bel giochino nuovo. Lo affronto dal lato di quello che vuole imparare le nuove estensioni (ma in realta' e' un linguaggio) senza leggere alcun manuale, facendo esperimenti, come papa' Ron Jeffries ci insegna.
template <typename T>
value class Handle
{
public:
Handle(T^ t)
{
m_GCHandle = GCHandle::Alloc(t);
}
void* ToPointer(void)
{
IntPtr handle = GCHandle::ToIntPtr(m_GCHandle);
return handle.ToPointer();
}
static T^ ToTarget(void* pointerToTarget)
{
return (T^) GCHandle::FromIntPtr((IntPtr) pointerToTarget).Target;
}
private:
GCHandle m_GCHandle;
};
Un template di una value class che accetta un tipo managed. Ma non e' adorabile?