how to create an array of scoped objects ?

Flaze07 christianseiji.cs at gmail.com
Tue Jul 3 07:29:12 UTC 2018


On Tuesday, 3 July 2018 at 07:03:43 UTC, vit wrote:
> On Tuesday, 3 July 2018 at 02:13:21 UTC, Flaze07 wrote:
>> e.g A is a class that emits output during destruction
>> {
>>     auto a = scoped!A();
>> }
>>
>> how do I contain it in a container, in the Array struct ?
>>
>> {
>>     auto a = scoped!A();
>>     Array!( typeof( a ) ) arr;
>>     foreach( i ; 0..3 ) {
>>         arr.insertBack( scoped!A );
>>     }
>> }
>>
>> is that how you do it ?
>
>
> Copying/moving scoped!Class is very unsafe. scoped!Class is 
> struct and have all of limitations of structs like no internal 
> pointers to itself...
> That's why it is not copyable.

that's interesting, but I am using dsfml by jebbs( not derelict 
), and I checked the code, it appears that the most of the class 
allocates resource and then freeing it in Destructor i.e

class RenderWindow {
     private sfRenderWindow* _window;
     public {
          this() {
             _window = sfRenderWindow_create(/*parameters*/);
          }
          //couple of other functions
          ~this() {
              sfRenderWindow_destroy( window );
          }
     }
}
//not a very accurate representation, but should get the message 
pretty clear

which I am very concerned about leaking resources, the tutorial 
did just not use scoped!, instead it directly use new, but what 
about leaking resources ?


More information about the Digitalmars-d-learn mailing list