Without knowing what type Value is, I can't even consider an answer.
If all you want is the address of the Value instance (which may or may not be what you really need), you could:
1 2 3
typedefunsignedlong ptr_type;
ptr_type p = reinterpret_cast< ptr_type >( &Value );
...then, use whatever you like to turn a number like unsigned long into a string using, likely, hex output.
Of course, exactly what type ptr_type should be typedef'd to be depends on the platform (32 or 64 bit pointers).
Bottom line, when you start working with pointers, you're working at the level of the CPU, and "simple" just isn't going to be part of that, most of the time.
The ToString() method is not a built-in C++ thing.
So either you wrote that or you are compiling using an additional library that provides that.
In your previous thread, you say Char::IsDigit(...). Again, unless you made this it had to come from something you are using in addition to C++.
What is your programming environment, framework, and/or additional libraries that you are using?
Objects in .NET aren't stable - they move whenever garbage collection chooses. C++/CLI allows for pinning pointers, but they're only valid as long as you hold the pin. The concept of pointers in C++/CLI is not quite the same as generalized C++, and depending on what you're really doing, may be meaningless from one moment to the next.
Frankly, if you already new the answer in C++, you'd have some awareness of the nature of the C++/CLI from the switch to the "CLI" part, and you'd already know it probably isn't a valid rabbit hole to plunder.
My advise would be to learn C++ long before you dive into C++/CLI, lest you end up completely confused about C++ itself. Learning C++/CLI before mastery of C++ is learning two subjects at once, without clearly recognizing where one stops and the other takes over.