This works !
I probably see what is wrong. But considering that only a child_handle calls a new() and memory is created only for the child_handle which is then passed onto parent_handle, how is it that there are different parent_handle.a and child_handle.a variables even though I didnt create a parent_handle object?