2016-10-23 3 views
-2

문제가 있습니다. 저는 C++을 처음 접했기 때문에 마음에두고주세요 ^^ 그래서 ::Save(Player* pPlayer)이라는 함수를 가지고 있습니다.이 함수는 플레이어의지도 m_mapSAVEDPLAYERS에 삽입하고 있습니다. 하지만 먼저 그 플레이어의 복사본을 만들어야하지만 어떻게해야합니까? Player* pNewPlayer = new Player();을 작성하고 pNewPlayer = pPlayer 또는 *pNewPlayer = *pPlayer을 작성해야합니까? 새 주소에 있어야하므로 나중에 수정되지 않습니다. 도와 주셔서 감사합니다.C++ 포인터 복사 클래스

+1

C++을 처음 접했을 때 동적으로 할당 된 객체에 포인터를 저장해야합니까? 또한 메모리 누수에 대한 코드를 확인하는 것이 좋습니다. – juanchopanza

+0

헝가리 표기법을 사용하지 마십시오. 즉, 이름에 유형 정보를 인코딩하지 마십시오. 'player'와'savedPlayers'와 같은 간단한 이름을 사용하십시오. 그리고 일반적인 지침으로 정확하게 이유를 모르는 경우'new'를 사용하지 마십시오. 기회는'std :: map <..., Player>'이고 인자를'Player const &'로 전달하면된다. 그렇지 않다면,'std :: map <..., std :: unique_ptr >'이 작업을 수행 할 수 있습니다. –

답변

2

복사본을 요청해야합니다.

Player* pNewPlayer = new Player(*pPlayer); 

그리고 null 값 포인터를 참조하지 않도록주의하십시오.

+0

감사합니다. – Joe