On Tuesday, 5 August 2014 at 15:39:55 UTC, sigod wrote:
On Saturday, 2 August 2014 at 06:46:04 UTC, Jonathan M Davis
via Digitalmars-d-learn wrote:
On Fri, 01 Aug 2014 23:09:37 +0000
sigod via Digitalmars-d-learn
<digitalmars-d-learn@puremagic.com> wrote:
Code: http://dpaste.dzfl.pl/51bd62138854
(It was reduced by DustMite.)
Have I missed something about structs? Or this simply a bug?
Don't do this with a member variable:
private Node * _root = new Node();
Directly initializing it like that sets the init value for
that struct, and
that means that every struct of that type will have exactly
the same value for
_root, so they will all share the same root rather than having
different
copies. You need to initialize _root in the constructor.
- Jonathan M Davis
So, it's a static initialization? Documentation didn't mention
it. (In class' section only 2 sentences about it and none in
struct's section.)
This is different from many languages (C#, Java... don't know
about C and C++). What was the reason to make this
initialization static?
It's a consequence of the fact that every type in D has a default
initializer which is known at compile time.