digitalmars.D.learn - Alias variable from another class
- Begah (32/32) Dec 13 2016 I made a little program to illustrate my confusion :
- Ali (16/16) Dec 13 2016 I guess it's because you're accessing a member of _1 from inside
- ketmar (2/3) Dec 14 2016 you can't.
- Rene Zwanenburg (5/6) Dec 15 2016 Closest you can get is wrapping it in a property. If you need to
I made a little program to illustrate my confusion : import std.stdio; class _1 { int i; this(int n) { i = n; } } class _2 { _1 instance; alias twelve = instance.i; this() { instance = new _1(12); } } void main() { _2 two = new _2(); writeln(two.instance.i); writeln(two.twelve); } What i tried to do is create an alias in class _2 of a variable in class _1. What i would like is : two.twelve to extends to: two.instance.i But the compiler complains it cannot find "this" : Error: need 'this' for 'i' of type 'int' Any ideas?
Dec 13 2016
I guess it's because you're accessing a member of _1 from inside a scope of _2 where nothing has been constructed yet? Someone more familiar with D would probably have a better answer on this part. I'm quite new :) But a work around would be class _2 { _1 instance; auto twelve() property { return instance.i; } this() { instance = new _1(12); } }
Dec 13 2016
On Tuesday, 13 December 2016 at 19:13:24 UTC, Begah wrote:Any ideas?you can't.
Dec 14 2016
On Tuesday, 13 December 2016 at 19:13:24 UTC, Begah wrote:Any ideas?Closest you can get is wrapping it in a property. If you need to do this often you may be able to generate them, check the recent "Getters/Setters generator" thread in Announce for some inspiration.
Dec 15 2016