You could only use something like that if root was an object, rather than a pointer to an object, but since that's not the case, you have to call the constructor yourself: Node *root=new Node;
By the way, all those initializations of parent, left, etc. should be in the constructor.
In that case, if you know current->right, and later current, is NULL, and therefore doesn't point to a valid object, why are you trying to set NULL->color to true?
Also, that code has a memory leak. Once you set current to current->right, the object you created can no longer be freed.
EDIT: It seems to me like you're making quite a mess with pointers.
You'll have to rework quite a bit of that code.
First, it looks like you're actually not using a constructor. You're just setting the members yourself. Aside from being tedious, this is error-prone.
Second, If you're going to set unassigned pointers to NULL, then when you check for NULLness, make the pointer point to something useful. Never access members of invalid pointers.
If you tell me what you're trying to do, I might be of a little more help.
Yes you are right I'm making mess with C pointers... I'm trying to do red-black tree, but don't understand those pointers and I don't know how can I write a constructor to struct because it's not a class...