September 25, 2019 How to get the address of an instance of a class | ||||
---|---|---|---|---|
| ||||
I wrote the following code to get the address of a class instance, but it doesn't work. Please let me know if there is a way to write it to work properly. private import std; ``` class C { C* this_pointer() { return this; } } void main() { C Z = new C(); writeln(&Z == Z.this_pointer()); } ``` |
September 25, 2019 Re: How to get the address of an instance of a class | ||||
---|---|---|---|---|
| ||||
Posted in reply to dokutoku | On Wednesday, 25 September 2019 at 17:32:25 UTC, dokutoku wrote:
> I wrote the following code to get the address of a class instance, but it doesn't work.
> Please let me know if there is a way to write it to work properly.
>
> private import std;
>
> ```
> class C
> {
> C* this_pointer()
> {
> return this;
> }
> }
>
> void main()
> {
> C Z = new C();
> writeln(&Z == Z.this_pointer());
> }
> ```
Classes are always references. I think you can just cast 'Z' to void* to get the address.
Conversely &Z should be an address on the stack.
|
Copyright © 1999-2021 by the D Language Foundation