As long as the Voldemort type lives on, does int x, y legally live on?
auto getPoint()
{
int x, y; // major issue
enum type = "2D";
struct Point(string Id)
{
static int _x = 1024;
static int _y = 768;
string toString() {
import std.format;
return format("Limit: %dx%d px.",
_x, _y);
}
void set(int a, int b) { x = a; y = b; }
uint area() { return x * y; }
auto get() { return this; }
}
auto px = Point!type();
return px.get;
}
For test:
auto p1 = getPoint();
p1.set(2, 21);
p1.area.writeln(" MP, ", p1);
typeof(p1).stringof
.writefln!"%s @%s"(&p1);
p1.set(10, 100);
p1.area.writeln(" MP, ", p1);
auto p2 = getPoint();
p2.area.writeln(" MP, ", p2);
p2.set(3, 21);
typeof(p2).stringof
.writefln!"%s @%s"(&p2);
p1.area.writeln(" MP, ", p1);
p2.area.writeln(" MP, ", p2);
Outputs:
>42 MP, Limit: 1024x768 px.
Point!"2D" @7FFD328DB770
1000 MP, Limit: 1024x768 px.
0 MP, Limit: 1024x768 px.
Point!"2D" @7FFD328DB788
1000 MP, Limit: 1024x768 px.
63 MP, Limit: 1024x768 px.
SDB@79