Cpp Circular Reference Problem