digitalmars.D.learn - acces to nested struc/unit member
- novice2 (24/24) Dec 29 2006 Hello. Could please anybody explain me syntax to access to nested
- Thomas Kuehne (4/28) Dec 29 2006 This union is named "Stru.Uni", it isn't anonymous.
- Derek Parnell (39/71) Dec 29 2006 Either use anonymous struct or declare and instance of the struct.
Hello. Could please anybody explain me syntax to access to nested
structure/union members? In Windows API translated headers thearis
situation - anonimous union nested in structure. This is minimal
trivial extracted example:
//dmd\html\d\struct.html: "anonymous structs/unions are allowed as
members of other structs/unions"
struct Stru
{
int a;
union Uni
{
int b;
int c;
};
}
void main()
{
Stru s;
//s.Uni.b = 2; // Error: need 'this' to access member b
//s.b = 2; // Error: no property 'b' for type 'Stru'
// Error: constant (s).b is not an lvalue
}
How i can access to s.Uni.b ?
Thanks for any advises.
Dec 29 2006
novice2 <sorry noem.ail> schrieb:Hello. Could please anybody explain me syntax to access to nested structure/union members? In Windows API translated headers thearis situation - anonimous union nested in structure. This is minimal trivial extracted example: //dmd\html\d\struct.html: "anonymous structs/unions are allowed as members of other structs/unions" struct Stru { int a; union Uni { int b; int c; }; }This union is named "Stru.Uni", it isn't anonymous. The anonymous version is:struct Stru { int a; union { int b; int c; }; }Thomas
Dec 29 2006
On Fri, 29 Dec 2006 14:52:59 +0000 (UTC), novice2 wrote:
Hello. Could please anybody explain me syntax to access to nested
structure/union members? In Windows API translated headers thearis
situation - anonimous union nested in structure. This is minimal
trivial extracted example:
//dmd\html\d\struct.html: "anonymous structs/unions are allowed as
members of other structs/unions"
struct Stru
{
int a;
union Uni
{
int b;
int c;
};
}
void main()
{
Stru s;
//s.Uni.b = 2; // Error: need 'this' to access member b
//s.b = 2; // Error: no property 'b' for type 'Stru'
// Error: constant (s).b is not an lvalue
}
How i can access to s.Uni.b ?
Thanks for any advises.
Either use anonymous struct or declare and instance of the struct.
Eg. (Anonymous)
struct Stru
{
int a;
union // Don't give this a name.
{
int b;
int c;
};
}
void main()
{
Stru s;
s.b = 2;
}
Eg. (Named)
struct Stru
{
int a;
union Uni // Named, therefore must instantiate it.
{
int b;
int c;
};
Uni u;
}
void main()
{
Stru s;
s.u.b = 2;
}
--
Derek Parnell
Dec 29 2006









Thomas Kuehne <thomas-dloop kuehne.cn> 