Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译器与C++;大堆_C++_Arrays_Class - Fatal编程技术网

C++ 编译器与C++;大堆

C++ 编译器与C++;大堆,c++,arrays,class,C++,Arrays,Class,我不熟悉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

我不熟悉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++;
}

除了“previousTurns[count]=roll”这一行之外,所有这些代码都能正常工作,一旦到达这一行,编译器就会崩溃,不会出现任何错误

int previousTurns[10];
int count = 0;
这些与
Dice
previousTurns
count
成员不同。实际上,它们是完全不相关的变量,只是碰巧有相同的名称。另一方面,成员
count
在此处未初始化:

 previousTurns[count] = roll;
请注意,在成员函数中,它是成员
count
,而不是
int count=0中的成员。您应该在构造函数中初始化它,如下所示:

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

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

您使用的是什么编译器?你能创建一个please吗?你滚动了多少次….?你有
previousTurns
count
两次,一次在类中,一次在源文件中声明为globals。这不应该是问题,但至少让人困惑…,也许是问题。您初始化了
count
,但是否初始化了
Dice::count
?如果您不这样做,那么
previousTurns[count]
是未定义的行为,您可以使用
std::vector
。那张
extendArray
看起来不祥。投票关闭,因为缺少可复制的示例。啊,我明白了,所以您不需要再次定义头文件中定义的变量?例如,我可以在头文件中初始化count=0,然后在源文件中使用Dice::count?也就是说,Dice::count与count不同(被视为不同的变量)……当然它与Java不同。没有冒犯,但是如果你认为你可以进入一个中等级别的C++,因为你知道java,那么你就走错了路。酷,有没有办法包括CPP文件,即,不带头文件的类来避免这个命名约定问题(即:骰子:计数VC++),或者是C++JMANXC中的坏习惯,我不理解这个问题。您不需要
int count=0在源文件中是的,我现在知道我没有,我已经从文件中删除了count,因为我在主驱动程序中包含了.h,我已经在头文件中包含了这些变量定义。我的问题是,是否可以创建一个没有头文件的类文件(即在.cpp文件中定义类),并将该.cpp文件包含在主驱动程序中。这将允许我使用“int count”而不是“Dice::count”,或者说包含cpp文件而不是.h文件是一种不好的做法。
Dice::Dice() : count(0) {}