digitalmars.D.learn - Access vialotion
- TheDGuy (18/18) Jun 22 2016 I have an array of buttons:
- TheDGuy (5/23) Jun 22 2016 Okay, i solved it, instead of:
- Moro Greenhand (3/28) Jun 22 2016 I would expect DMD to output a warning here, because of the
- Steven Schveighoffer (7/37) Jun 23 2016 Variable shadowing only is reported by the compiler for function locals....
- vladdeSV (11/36) Jun 22 2016 I would also suggest you use a foreach loop to iterate over the
- Bell Baggins (3/41) Jun 22 2016 No, ref for classes is pointless. The ptr destination is always
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?
Jun 22 2016
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];
Jun 22 2016
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 would expect DMD to output a warning here, because of the shadowing...but after 3 verifications, nothing. Dscanner does.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];
Jun 22 2016
On 6/22/16 9:00 AM, Moro Greenhand wrote:On Wednesday, 22 June 2016 at 12:47:31 UTC, TheDGuy wrote:Variable shadowing only is reported by the compiler for function locals. That is, variables cannot shadow other variables from the same function. It allows shadowing of variables outside the function. This is deliberate. Otherwise, someone may name a variable somewhere else the same as yours, and your perfectly working code is now flagged as an error. -SteveOn Wednesday, 22 June 2016 at 12:45:29 UTC, TheDGuy wrote:I would expect DMD to output a warning here, because of the shadowing...but after 3 verifications, nothing. Dscanner does.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];
Jun 23 2016
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 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?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];
Jun 22 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:No, ref for classes is pointless. The ptr destination is always the same heap chunk, whatever you use the original pointer or not.On Wednesday, 22 June 2016 at 12:45:29 UTC, TheDGuy wrote: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?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];
Jun 22 2016