SRAND 在类中的函数
srand function in class
我正在学习C++,但我似乎找不到问题的答案。当我运行我的代码时,我没有收到任何编译器错误,但是当我调用函数"getVin()"(应该使用"generate()"函数生成一个随机数)时,它不会这样做。它输出零。这是我的类(来自头文件):
class Vehicle {
public:
Vehicle();
static int generate();
const int getVin () { return m_vin; }
protected:
float m_lla[3];
const int m_vin = s_idgen;
private:
static int s_idgen;
};
和定义(来自源文件):
int Vehicle::s_idgen = generate();
Vehicle::Vehicle() {
m_lla[3] = 0;
}
int Vehicle::generate() {
srand((int)time(0));
return (rand() % 10000) + 1;
}
任何建议都会有所帮助,谢谢!
我可以
部分重现,所以我假设你被静态初始化惨败咬了。我刚刚补充了:
Vehicle sveh; // static scoped
紧跟在车辆声明之后,在任何方法或静态字段定义之前,然后
int main() {
Vehicle veh;
std::cout << veh.getVin() << std::endl;
std::cout << sveh.getVin() << std::endl;
return 0;
}
输出为:
1915
0
这意味着自动Vehicle
正确使用随机值(运行随机,但所有实例通用...),而静态值在静态字段初始化之前初始化。
在标题中,您可以:
protected:
const int m_vin = s_idgen;
在源文件中,您可以执行以下操作:
int Vehicle::s_idgen = generate();
当m_vin
初始化发生时,s_idgen
的值是多少?它还没有被generate()
设定.试着把它打印出来,看看我的意思。
尝试直接从函数返回s_idgen
。
PS:考虑使用 <random>
而不是 C 传统函数。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- C++ 'srand()' 函数产生模式?
- 如何调用 ntoskrnl.exe srand 函数?
- SRAND 在类中的函数
- rand()在通过函数调用时生成相同的随机数集(即使在使用srand(time(NULL)进行种子设定之后)
- 为srand()提供Windows的时间函数
- 循环C++ srand() 函数
- 重载函数的调用在使用 srand(time(0)) 时是不明确的
- srand函数如何与时间函数相互作用
- 使用srand和时间函数的差异