이것은 이미 제출 된 숙제에서 나옵니다.이 프로그램은 게임이 끝났을 때 올바르게 재생되지만 오류가 발생하는 카드 게임입니다. 내 delete [] playerArr에 코어 덤프를 추적 할 수는 있지만 실제로 문제는 내 PlayerArr을 선언하는 방법입니다.큐 멤버가 포함 된 구조체의 동적 배열을 어떻게 선언합니까?
다른 프로그램과 잘 작동하는 내 .h 파일에서 생성자, 복사, 오버로드 된 연산자 및 소멸자가 있습니다. 따라서 문제가 main에 있다고 생각합니다. 나는 여기에 구글과 다른 몇 가지 질문을 봤어 꽤 하나를 찾지 못했습니다. 다음은 코드 스 니펫입니다.
struct Player
{
int currentHand; //current number of cards in given player's hand
Queue hand; //queue to store player's hand
};
(주) 구조체의 배열을 할당합니다. 이것이 내 문제라고 생각합니다. 내가 재판을했습니다과 접근의 다양한 오류가 발생한 그러나 이것은 컴파일하는 내 프로그램을 허용하고 내 게임 설계로 재생이 내가 삭제하기 전에 정리하는 데 사용하는 순서는
//allocate array of Player structs
Player *playerArr = new Player[numPlayers];
for (int i = 1; i <= numPlayers; i++)
playerArr[i].currentHand = 0;
//enqueue playerArr.hand
deal(playerArr, deck, numPlayers, currentDeck);
, 핵심은 COUT 후 덤프 :
그것은 누군가가 내가이 배울 수 나를 위해 솔루션을, 그래서 만약 내가 근무 시간 내 교수를 방문 할 시간이 없어 주이 프로그램과 결승전 내 등급을 변경하는 나를 위해 너무 늦기//exit do-while loop and end game
}
while (playerArr[currentPlayer - 1].currentHand != 0);
for (int i = 1; i < numPlayers; i++)
{
while (playerArr[i].currentHand > 0)
{
playerArr[i].hand.dequeue(catchQ);
playerArr[i].currentHand--;
}
}
//empty all deck/discard stacks
while (!deck.isEmpty())
deck.pop(catchPop);
while (!discard.isEmpty())
discard.pop(catchPop);
//reset hand/deck counters to defaults
catchQ = 0;
catchPop = 0;
currentDeck = 52;
currentPlayer = 1;
numPlayers = 2;
cout << "\n\n\n\t Good Game!" << endl << endl;
//free dynamic memory
delete [] playerArr;
실수하고 계속 나아 간다.
문제의
"동적 배열"을 생각할 때마다 다음 생각은 * 항상 * [std :: vector']이어야합니다 (http://en.cppreference.com/w/cpp/container/vector). –