Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
March 27, 2018 D RAII with postblit disabled | ||||
---|---|---|---|---|
| ||||
Hi All, What's the best way to do this in D? E.g. --- struct O { int* value; @disable this(this); /+ this() { this.value = theAllocator.make!int(99); } +/ ~this() { theAllocator.dispose(this.value); } } O obj = O(); // Ideally this would be allocated but it simply run O.init --- Thanks Norm |
March 27, 2018 Re: D RAII with postblit disabled | ||||
---|---|---|---|---|
| ||||
Posted in reply to Norm | On Tuesday, 27 March 2018 at 02:35:23 UTC, Norm wrote:
> What's the best way to do this in D?
I'd also add `@disable this();` and then a `static O make() { return O(theAllocator.make!int(99)); }`
than you construct it with that static make function.
|
March 27, 2018 Re: D RAII with postblit disabled | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Tuesday, 27 March 2018 at 02:43:15 UTC, Adam D. Ruppe wrote:
> On Tuesday, 27 March 2018 at 02:35:23 UTC, Norm wrote:
>> What's the best way to do this in D?
>
> I'd also add `@disable this();` and then a `static O make() { return O(theAllocator.make!int(99)); }`
>
> than you construct it with that static make function.
Perfect, thanks.
|
March 29, 2018 Re: D RAII with postblit disabled | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Tuesday, 27 March 2018 at 02:43:15 UTC, Adam D. Ruppe wrote:
> On Tuesday, 27 March 2018 at 02:35:23 UTC, Norm wrote:
>> What's the best way to do this in D?
>
> I'd also add `@disable this();` and then a `static O make() { return O(theAllocator.make!int(99)); }`
>
> than you construct it with that static make function.
OK, that got me over the first hurdle but I still cannot use RAII with struct member vars. E.g.
---
struct Resource {
this() {allocate_something();}
~this() {release_something();}
}
struct S {
Resource resource;
}
---
Is there a way to do this in D, or does it require special "create" functions for every struct that has a RAII-like struct as a member?
Thanks,
Norm
|
March 29, 2018 Re: D RAII with postblit disabled | ||||
---|---|---|---|---|
| ||||
Posted in reply to Norm | On Thursday, 29 March 2018 at 04:12:38 UTC, Norm wrote:
> Is there a way to do this in D, or does it require special "create" functions for every struct that has a RAII-like struct as a member?
You'll have to do it all the way up (unless you can use a constructor with an argument and call that instead)
|
March 29, 2018 Re: D RAII with postblit disabled | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Thursday, 29 March 2018 at 04:16:55 UTC, Adam D. Ruppe wrote:
> On Thursday, 29 March 2018 at 04:12:38 UTC, Norm wrote:
>> Is there a way to do this in D, or does it require special "create" functions for every struct that has a RAII-like struct as a member?
>
> You'll have to do it all the way up (unless you can use a constructor with an argument and call that instead)
OK, thanks.
|
Copyright © 1999-2021 by the D Language Foundation