Is the Node that you get from the initialize valid as in is it non-null value, because if I remember correctly, unless I gave specificly the Node that I wanted to initialize from the xml, it returned some weird stuff from the initialize.
Since you can get the node from the scene with getchild, it is highly likely that the node you get from the initialize is not the same.
Another thing, well since I am not sure how C++ handles, but there would be implicit conversion from raw pointer to weakptr, which I honestly myself have no idea what it does? Basically you have:
Urho3D::WeakPtr<Urho3D::Node> playerNode = Urho3D::Node*
vs what you want to have is to initialize the weakpointer with the raw pointer:
Urho3D::WeakPtr<Urho3D::Node> playerNode = Urho3D::WeakPtr<Urho3D::Node>( Urho3D::Node* )
I am not sure does these 2 lines evaluate the same way.
So you could try using raw pointer as the playerNode and see how it works if the life expectation allows it + this way you could actually make sure that the Node* returned is not null. And even if it is null, does the Node have a child that is named player, because for me unless I told the xml-file to initialize the correct node-tag from the xml-file.
Edit2: I think it would help a bit for trying to find what is wrong if you could paste the xml-file or at least some contents from the xml-file to figure out what/where things go wrong. For me, it took me a while to not realize that I actually had another octree from the initialize until I only gave the node-part of my xml to the initialize-function.