Thread overview | ||||||
---|---|---|---|---|---|---|
|
March 11, 2010 Static struct assign | ||||
---|---|---|---|---|
| ||||
While trying to create a safe int, I have found a problem, this is reduced code: struct Foo { int x; static Foo opAssign(int value) { return Foo(value); } } void main() { Foo y = 0; } The compiler prints: test.d(6): Error: cannot implicitly convert expression (0) of type int to Foo While this generates no error: Foo y; y = 0; is OK. Do you know if there is a way to do that? Bye and thank you, bearophile |
March 11, 2010 Re: Static struct assign | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On 03/11/2010 11:22 AM, bearophile wrote:
> While trying to create a safe int, I have found a problem, this is reduced code:
>
> struct Foo {
> int x;
> static Foo opAssign(int value) { return Foo(value); }
> }
> void main() {
> Foo y = 0;
> }
>
>
> The compiler prints:
> test.d(6): Error: cannot implicitly convert expression (0) of type int to Foo
>
> While this generates no error:
> Foo y; y = 0; is OK.
>
> Do you know if there is a way to do that?
>
> Bye and thank you,
> bearophile
define opCall in Foo
|
March 11, 2010 Re: Static struct assign | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ellery Newcomer | Ellery Newcomer:
> define opCall in Foo
Thank you :-)
I need to practice more with operator overload.
Bye,
bearophile
|
March 11, 2010 Re: Static struct assign | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On 03/11/2010 06:22 PM, bearophile wrote:
> While trying to create a safe int, I have found a problem, this is reduced code:
>
> struct Foo {
> int x;
> static Foo opAssign(int value) { return Foo(value); }
> }
> void main() {
> Foo y = 0;
> }
>
>
> The compiler prints:
> test.d(6): Error: cannot implicitly convert expression (0) of type int to Foo
>
> While this generates no error:
> Foo y; y = 0; is OK.
>
> Do you know if there is a way to do that?
>
> Bye and thank you,
> bearophile
I think you want a constructor.
struct Foo {
int x;
static Foo opAssign(int value) { return Foo(value); }
this(int i) {x = i;}
}
|
Copyright © 1999-2021 by the D Language Foundation