The member variable m_NavigationDatas is overwritten when SetNavigationDatas(...) gets called, even if memory was allocated before on a call to AddNavigationData(...).
Additionally the member variable is deleted in the destructor even if it was set from outside by SetNavigationDatas(...), which could result in a double free if the caller deletes the memory itself (without knowing or expecting that this is done inside the class where he just called a setter).