我的代码如下所示:
#include <iostream>
#include <vector>
#include <string>
#include <stdlib.h>
using std::string;
using std::endl;
using std::cout;
using std::cin;
struct funcs
{
std::vector<int> values;
int sum;
void createVectorValues(){
while(values.size() < 100)
{
int x = rand() % 100;
values.push_back(x);
}
for(int& a : values)
{
sum += 1;
}
cout << sum;
}
};
int main()
{
srand;
funcs myFunct;
myFunct.createVectorValues();
}
以下代码会产生一个较大的值,例如-858993360
我如何更改此代码,使其能够正常运行
-
您没有为
funcs
定义构造函数,所以您得到了默认构造函数,它调用每个成员的默认构造函数。这意味着CCD_ 2成员CCD_。请参阅默认构造函数是否初始化内置类型?。您可能想要编写一个构造函数,将sum
初始化为0
。 -
srand;
不是函数调用。这是有效的语法,因为srand
的计算结果是指向srand
函数的指针,但它是一个没有副作用的表达式,所以它什么也不做。就像你写了3;
一样。要调用该函数,需要srand(arg)
,其中arg
是一个适当的整数。或者,切换到C++11随机数生成功能,它更强大,通常具有更好的随机性。
试试这个:
int main(int, char **) {
funcs myFunct;
myFunct.createVectorValues();
}
尽管不知道为什么你的防病毒软件参与其中。这可能是一个单独的问题。