编译器崩溃与C++数组

Compiler Crash with C++ Array

本文关键字:数组 C++ 崩溃 编译器      更新时间:2023-10-16

我是 c++ 的新手(java 背景),并且在数组方面遇到了一个奇怪的问题。 我有以下涉及掷骰子的代码,数组用于存储以前的掷骰子。

#include <stdlib.h> //c file for random number generator
#include <iostream>
#include "Dice.h";
using namespace std;
int previousTurns[10];
int count = 0;
void Dice::roll()
{
cout<<"Rolling Dice....";
int seed = rand() %100;
srand(seed);
int roll = rand() %6 + 1;
cout<<"You have rolled a " << roll << "n";
previousTurns[count] = roll;
count++;
}

我还有一个头文件 Dice.h(其中包括我尚未实现的其他方法):

#ifndef DICE_H_
#define DICE_H_
class Dice
{
private:
int previousTurns[10];
int count;
void extendArray(int a[]); 
int size();
public:
void roll();
void previousRolls();
void displayArray();
};
#endif /* DICE_H_ */

除了"previousTurns[count] = roll"行之外,所有这些代码都有效,编译器一旦到达这一行就会崩溃,没有任何错误。

在源文件中,您有

int previousTurns[10];
int count = 0;

这些不同于DicepreviousTurnscount成员。实际上,它们是完全不相关的变量,恰好具有相同的名称。另一方面,成员count在此处未初始化

previousTurns[count] = roll;

请注意,在成员函数中它是成员count,而不是来自int count = 0;的成员。你应该在构造函数中启动它,如下所示:

Dice::Dice() : count(0) {}

另请注意,您应该只调用seed一次(例如在构造函数中),而不是每次滚动数字时。