C++ Card 相关程序将无法编译。 (运行时错误)

标签 c++

有谁知道为什么我的程序会出现运行时错误并崩溃?我似乎无法弄清楚。似乎没有调试选项。它只是在启动时崩溃。请帮助我完整地回答我的问题并善待它。希望大家能帮帮我。

#include <cstdlib>
#include <iostream>
#include <ctime>
#include <math.h>
using namespace std;

class Card {
    private:
        string suit;
        string face;
        int number;

    public:
        Card (string cardsuit , int cardnumber){
            suit = cardsuit;
            number = cardnumber;
        }

        Card () {
            suit = "";
            number = 0;
        }

        void setcard (string cardsuit){
            suit = cardsuit;
        }

        void setnumber( int cardnumber){
            number = cardnumber;
        }

        void display() {
            if(number == 0) {
                cout << "" ;
            }
            else
                (cout << number << " of " << suit << endl)  ;
        }
};

int main(int argc, char *argv[])
{
    Card acard[52];

    for (int i = 0; i <= 13; i++){
        acard[i] = Card("Hearts " , i+1);
    }  

    for (int i = 0; i <= 13; i++) {
        acard[i+13] = Card("Diamonds " , i+1);
    }

    for (int i = 0; i <= 13; i++) {
        acard[i+26] = Card("Clubs " , i+1);
    }

   for (int i = 0; i <= 13; i++) {
        acard[i+39] = Card("Spades " , i+1);
    }

    for (int i = 0; i < 52; i++) {
        acard[i].display();
    }

    cout << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

最佳答案

逻辑错误...

您在功能上用“方 block 1”覆盖了“红心 14”。您也可以对其余花色执行此操作。

acard[i] = Card("Hearts " , i+1);      // i is 13
acard[i+13] = Card("Diamonds " , i+1); // i is 0

写入超出数组末尾...

在最后一个 for 循环中,最后一次迭代在数组末尾之外写入:

acard[i+39] = Card("Spades " , i+1);   // i is 13

还有...

Card::display() 中将 cout 表达式放在圆括号中是很奇怪的。

关于C++ Card 相关程序将无法编译。 (运行时错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27436780/

相关文章:

c++ - 具有默认参数的类模板作为较小参数的模板模板类参数的不一致处理

c++ - 为什么在元组初始化中复制构造的对象?

c++ - 面向对象程序设计继承拷贝构造函数

c++ - 我可以为数组的所有成员添加一个值吗

c++ - 构建文件夹和makefile

c++ - c++中堆上的二维矩阵分配

c++ - 不稳定和双重困惑

c++ - 为对基础对象进行操作的函数提供派生对象数组

c++ - 我们如何确认内在矩阵是正确的?

c++ - 如何在 C++ 中创建沙箱环境?