Object Pointer

Jonathan M Davis jmdavisProg at gmx.com
Sun Jul 15 16:14:21 PDT 2012


On Monday, July 16, 2012 00:47:27 Namespace wrote:
> Is something like this possible?
> 
> Foo* create_ptr(Foo f) {
>      assert(f !is null);
>      // ...
> }
> 
> Foo* fp = create_ptr(new Foo());
> 
> with "ref Foo f" of course, there is no limitation.

You cannot have pointers to classes. The language does not support it. You can 
have pointers to class references, and you can have pointers to structs or the 
built-in types, but if Foo is a class, then what you can't have a pointer to 
it. The closest that you can get is that I believe that you can cast class 
references to and from void*, and that will work, but Foo* is a pointer to a 
reference to Foo, not a pointer to Foo, and there's no way in the type system 
to represent a pointer to Foo.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list