Access vialotion

Bell Baggins via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 22 06:27:19 PDT 2016


On Wednesday, 22 June 2016 at 13:24:47 UTC, vladdeSV wrote:
> On Wednesday, 22 June 2016 at 12:47:31 UTC, TheDGuy wrote:
>> On Wednesday, 22 June 2016 at 12:45:29 UTC, TheDGuy wrote:
>>> I have an array of buttons:
>>>
>>> class Window : MainWindow{
>>>     private Button[4] bArr;
>>>     this(){
>>>         Button btn_1 = new Button();
>>>         Button btn_2 = new Button();
>>>         Button btn_3 = new Button();
>>>         Button btn_4 = new Button();
>>>         Button[4] bArr = [btn_1,btn_2,btn_3,btn_4];
>>>     }
>>>     private void letButtonsFlash(){
>>>         for(int i = 0; i < 4; i++){
>>>             writeln(this.bArr[i].getName());
>>>         }
>>>     }
>>> }
>>>
>>> i don't understand why i get an 'Access Violation' - Error in 
>>> the 'for'-loop?
>>
>> Okay, i solved it, instead of:
>> Button[4] bArr = [btn_1,btn_2,btn_3,btn_4];
>>
>> this:
>> bArr = [btn_1,btn_2,btn_3,btn_4];
>
> I would also suggest you use a foreach loop to iterate over the 
> buttons:
>
> private void letButtonsFlash()
> {
>     foreach(button; bArr)
>     {
>         writeln(button.getName());
>     }
> }
>
> //Also, question to anyone: should a ref be used here?

No, ref for classes is pointless. The ptr destination is always 
the same heap chunk, whatever you use the original pointer or not.


More information about the Digitalmars-d-learn mailing list