digitalmars.D.learn - Compare struct against null
- Heinz <malagana15 yahoo.es> Apr 27 2008
- downs <default_357-line yahoo.de> Apr 28 2008
- Heinz <malagana15 yahoo.es> Apr 28 2008
- "Simen Kjaeraas" <simen.kjaras gmail.com> Apr 28 2008
- downs <default_357-line yahoo.de> Apr 29 2008
Hi,
I have a simple struct and i want to check if a variable has been asigned:
struct hello
{
}
...
hello h;
...
if(!h)
{
do stuff;
}
When compiling i get erros about opCall not implemented and many others. What
can i do?
Thanks in advance.
Apr 27 2008
Heinz wrote:Hi, I have a simple struct and i want to check if a variable has been asigned: struct hello { } ... hello h; ... if(!h) { do stuff; } When compiling i get erros about opCall not implemented and many others. What can i do? Thanks in advance.
Structs are value types. Read the spec. Then use a pointer :) hello* h; if (!h) h = new hello; --downs
Apr 28 2008
downs Wrote:Heinz wrote:Hi, I have a simple struct and i want to check if a variable has been asigned: struct hello { } ... hello h; ... if(!h) { do stuff; } When compiling i get erros about opCall not implemented and many others. What can i do? Thanks in advance.
Structs are value types. Read the spec. Then use a pointer :) hello* h; if (!h) h = new hello; --downs
Thanks for your reply. Can i use then?: hello h; if(!&h)
Apr 28 2008
On Tue, 29 Apr 2008 06:50:18 +0200, Heinz <malagana15 yahoo.es> wrote:downs Wrote:Structs are value types. Read the spec. Then use a pointer :) hello* h; if (!h) h =3D new hello; --downs
Thanks for your reply. Can i use then?: hello h; if(!&h)
No. &h will always return a non-null pointer (h exists, in other words).= You might use some convoluted workaround to make hello aware of whether = or not it has been assigned something. Easy example: struct hello { bool assigned; // other fields; } hello h; h =3D hello(true, ...); if (h.assigned) DoSomethingOrOther(); This may or may not be enough for you needs. -- Simen
Apr 28 2008
Heinz wrote:downs Wrote:Heinz wrote:Hi, I have a simple struct and i want to check if a variable has been asigned: struct hello { } ... hello h; ... if(!h) { do stuff; } When compiling i get erros about opCall not implemented and many others. What can i do? Thanks in advance.
hello* h; if (!h) h = new hello; --downs
Thanks for your reply. Can i use then?: hello h; if(!&h)
No. Structs are *value types*. That means, unless _explicitly newed_ (or part of a struct that's explicitly newed), they _always_ live on the stack. Ergo, if &h is null, your complete callstack is shot :) --downs
Apr 29 2008









"Simen Kjaeraas" <simen.kjaras gmail.com> 