| Thread overview | ||||||
|---|---|---|---|---|---|---|
|
November 21, 2016 null this | ||||
|---|---|---|---|---|
| ||||
Hello,
how can calling method on local struct throw "null this"?
struct is initialized by .init and have default values.
struct Foo {
Bar bar;
static struct Bar {
float x, y, z;
}
Bar getBar() {
return bar;
}
}
then
Foo foo = Foo.init;
auto b = foo.getBar(); // throw "null this"
| ||||
November 21, 2016 Re: null this | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Satoshi | cast(ulong)&foo but is not null. It won't work just in special cases what I cannot reproduce easily. | |||
November 21, 2016 Re: null this | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Satoshi | On 21/11/2016 11:25 PM, Satoshi wrote:
> Hello,
> how can calling method on local struct throw "null this"?
> struct is initialized by .init and have default values.
>
>
> struct Foo {
> Bar bar;
>
> static struct Bar {
> float x, y, z;
> }
>
> Bar getBar() {
> return bar;
> }
>
> }
>
>
> then
> Foo foo = Foo.init;
> auto b = foo.getBar(); // throw "null this"
Well that code definitely works fine as is.
Perhaps remove that static, it makes me a little queasy just looking at it.
Also no need to set foo to Foo.init, it already is that value.
| |||
November 21, 2016 Re: null this | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Satoshi | On Monday, 21 November 2016 at 10:25:17 UTC, Satoshi wrote:
> Hello,
> how can calling method on local struct throw "null this"?
> struct is initialized by .init and have default values.
>
>
> struct Foo {
> Bar bar;
>
> static struct Bar {
> float x, y, z;
> }
>
> Bar getBar() {
> return bar;
> }
>
> }
>
>
> then
> Foo foo = Foo.init;
> auto b = foo.getBar(); // throw "null this"
I had
auto ref getBar() inout {
return bar;
}
in which was problem. When I separated it into 2 funcs get/set it works fine.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply