Newbie question: Return a locally allocated variable

Fitz fitz at figmentengine.com
Mon Sep 14 16:53:20 UTC 2020


On Monday, 14 September 2020 at 16:44:14 UTC, Adam D. Ruppe wrote:

> This is a common mistake with people coming from C++. A D class 
> is more like a Java class - it is automatically a reference.
>
> So your class Bob here in D would actually be represented as 
> `Bob*` in C++.
>
> Thus when you define `Bob*` in D, that's like a `Bob**` in 
> C++... a pointer to a pointer. Thus you're getting the address 
> on the stack of the local, not at all what you want.
>
> Your factory should really just be:
>
> Bob bobFactory() { return new Bob; }
>
> Then to compare addresses, do:
>
> writeln(cast(void*) bob); // convert the reference itself to a 
> pointer

thank you! I was driving myself mad.
makes sense now.


More information about the Digitalmars-d-learn mailing list