[Issue 5460] New: enum of struct not calling constructor
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Jan 18 09:38:39 PST 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5460
Summary: enum of struct not calling constructor
Product: D
Version: D1 & D2
Platform: Other
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: andrej.mitrovich at gmail.com
--- Comment #0 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2011-01-18 09:36:41 PST ---
Example 1:
import std.stdio;
enum WindowSizes : QSize
{
Minimum = QSize(10)
}
struct QSize
{
int store;
this(int x)
{
store = x + 10;
}
}
void main()
{
auto foo = WindowSizes.Minimum;
assert(foo.store == 10); // What?
auto bar = QSize(10);
assert(bar.store == 20);
}
The constructor is never called for the enum. It does field by field
assignments instead, as shown in this case:
import std.stdio;
enum WindowSizes : Inverted
{
Minimum = Inverted(10, 20)
}
struct Inverted
{
int x;
int y;
this(int in_x, int in_y)
{
x = in_y;
y = in_x;
}
}
void main()
{
auto foo = WindowSizes.Minimum;
assert(foo.x == 10);
assert(foo.y == 20);
auto bar = Inverted(10, 20);
assert(bar.x == 20);
assert(bar.y == 10);
}
Field assignments should be disabled when a constructor is present.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list