-2
나는 Game
구조체를 생성하고이 같은 생성자를 통해에서 n
플레이어를 설정하기 위해 노력하고있어에서 구조체의 포인터에 포인터를 액세스 할 수 없습니다 :는 C++
typedef struct _Player
{
int life;
_Player()
{
life = 3;
}
}Player;
typedef struct _Game
{
Player **players;
_Game(int n)
{
*players = new Player[n];
for(int i = 0; i < n; i++)
{
players[i] = (Player*) malloc(sizeof(Player));
players[i] = new Player();
}
}
}Game;
int main()
{
Game *game = new Game(10);
printf("%d\n", (game->players[0])->life);
getch();
return 0;
}
을하지만 그것은 단지 실행에 충돌 시간, 그것을 수정하려고했지만 여전히 이유를 찾을 수 없습니다.
아무도 도와 줄 수 있습니까? 귀하의 답변에 감사드립니다.
당신이 그 기술을 집어 어디 모르겠지만,이 엉망
[예약 식별자] (http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier)를 사용하고 있습니다. 또한, 거기에'malloc '으로 무엇을하려고하는지 모르겠지만'Player'와는 작동하지 않을 것입니다. 가장 쉬운 해결책은 '플레이어'를'std :: vector'으로''게임 '을''게임'으로 변경하는 것입니다. 이 포인터는 전혀 필요하지 않습니다. –
chris
그런데 오래된 IDE를 사용하고 있습니다 !! – haccks
c 및 C++을 혼합하십시오. 1. iostream에서 제공하는 C++ - 입출력을 사용해보십시오. 2. 메모리를 두 번 할당 할 필요가 없습니다.'new'만으로 충분합니다. 필요한 공간을 할당 할 것입니다! – urzeit