#include \"stdafx.h\"
#include <iostream>

class CPlayer
{
private:
     int m_iHP;
public:
     CPlayer(void) : m_iHP(0){}
     CPlayer(CPlayer* _pPlayer)
     {
          this->m_iHP = _pPlayer->GetHP();
     }
     ~CPlayer() {}
     virtual void SetHP( int iHP ) { m_iHP = iHP; };
     virtual int GetHP(void){ return m_iHP; }
     virtual void FrameMove()
     {
          std::cout<<m_iHP<<std::endl;                         // 현재 HP 출력
     }
};

class CPlayer_Potion : CPlayer
{
     CPlayer m_Player;
public:
     CPlayer_Potion(CPlayer _player)
     {
          m_Player = _player;
     }
     virtual void FrameMove()
     {
          static int iCount = 0;
          ++iCount;
          m_Player.SetHP( m_Player.GetHP() + 1 );     // 상속받아서 HP 1 증가해서
          m_Player.FrameMove();                                // HP 출력
     }
};



int _tmain(int argc, _TCHAR* argv[])
{
     CPlayer* player = new CPlayer();

     for( int i = 0 ; i < 2000000 ; ++i )
     {
          if( (i%2) == 1 )
          {
               CPlayer* playerTmp = player;
               player = (CPlayer *)new CPlayer_Potion( *player );
               delete playerTmp;
          }
          if( (i%2) == 0 )
          {
               CPlayer* playerTmp = player;
               player = new CPlayer( player );
               delete playerTmp;
          }


          player->FrameMove();  
     }

     delete player;

     return 0;
}





죄송하지만 질문 좀 할게요

상단의 CPlayer class 복사생성자에서 하고 싶은 일은

main함수에서

player = (CPlayer *)new CPlayer_Potion( *player );
player->FrameMove();

를 실행시키고 HP를 증가시킨 값이거든요.

근데 객체 내부를 까보니까

CPlayer의 m_iHP는 0이 들어가있고

CPlayer에 잡아넣은 CPlayer_Potion 안에 있는 CPlayer객체의 m_iHP의 값이

제가 원하는 1증가된 값으로 설정되어 있더군요.

저는 저 프로그램이 한 번씩 쉬어가면서 1씩 증가시키는 일을 하도록 했으면 좋겠는데

그렇게 하도록 바꾸려면 어떤 부분을 어떻게 해야 할까요?...

아니면

CPlayer에 잡아넣은 CPlayer_Potion 안에 있는 CPlayer객체의 m_iHP에 접근하려면 어떻게 해야 할까요?