编译器崩溃与C++数组
Compiler Crash with C++ Array
我是 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;
这些不同于Dice
previousTurns
和count
成员。实际上,它们是完全不相关的变量,恰好具有相同的名称。另一方面,成员count
在此处未初始化
previousTurns[count] = roll;
请注意,在成员函数中它是成员count
,而不是来自int count = 0;
的成员。你应该在构造函数中启动它,如下所示:
Dice::Dice() : count(0) {}
另请注意,您应该只调用seed
一次(例如在构造函数中),而不是每次滚动数字时。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '