簡體   English   中英

無法找出崩潰

[英]Can't figure out crash

首先,我要說這是一項學校練習。 我試圖學習的不僅僅是復制/粘貼答案。 朝正確方向的提示會很棒。 很抱歉,如果這個問題不遵守本網站的任何規定。

所以我的問題是我創建了一組卡片,並且列出了陣列中的每個卡片(一個int)。 第一個工作正常,但是在第二個卡集上,我的程序崩潰了。

我遺漏了一些代碼。 我不擔心所有功能。 我的程序在構造器區域崩潰。 它編譯正常,但在執行時崩潰。 那里肯定有一個非常簡單的錯誤。 謝謝!

卡集

#include <iostream>
#include "CardSet.h"
using namespace std;

CardSet::CardSet()
{
    nCards = 0;
}

CardSet::CardSet(int Input_Card_Amount)
{
    nCards = Input_Card_Amount;
    int quot = (int)nCards / 52;
    int rem = nCards % 52;
    int Sets_Of_Cards = 0;
    int Card_Index = 0;
    while(Sets_Of_Cards != quot)
    {
        for(int Card_Counter = 0; Card_Counter < 52; Card_Counter++)
        {
            Card[Card_Index] = Card_Counter;
            Card_Index++;
        }
        Sets_Of_Cards++;
    }
    for(int Card_Counter = 0; Card_Counter < rem; Card_Counter++)
    {
        Card[Card_Index] = Card_Counter;
        Card_Index++;
    }
}

CardSet::~CardSet()
{
    delete[] Card;
}

main.cpp

int main()
{
    CardSet CardSet1(12), CardSet2(12), CardSet3, CardSet4, CardSet5, CardSet6;

    cout << "BEGINNING OF CARDSET TESTS . . .  "<< endl << endl;

    cout << "Test 1: Constructors:" << endl;
    cout << "CardSet1 Size: " << CardSet1.Size() << endl;
    cout << "CardSet3 Size: " << CardSet3.Size() << endl;
    cout << "Printout of CardSet1:" << endl;
    CardSet1.Print();
    cout << "Printout of CardSet2:" << endl;
    CardSet2.Print();
    cout << endl;
    enter code here
    cout << ". . . END OF TESTS"<< endl;
    return 0;
}

卡集

#ifndef CARDSET_H
#define CARDSET_H

class CardSet
{
    public:
        CardSet();
        CardSet(int);
        ~CardSet();
        int Size() const;
        bool IsEmpty() const;
        void Shuffle();
        int Deal();
        void Deal(int,CardSet&,CardSet&);
        void Deal(int,CardSet&,CardSet&,CardSet&,CardSet&);
        void AddCard(int);
        void MergeShuffle(CardSet&);
        void Print() const;
    private:
        int* Card;
        int nCards;
        void PrintCard(int c) const;
};

#endif

您需要分配卡。 抱歉,我正在通過電話接聽電話,所以有些棘手,但基本上您需要

Card = new int[52]

嘗試訪問卡陣列之前。 即,在您的while循環之前。

希望能有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM